From 845b0612dc8ffea9f695c3f4ae22e5520ad070b8 Mon Sep 17 00:00:00 2001 From: bloeys Date: Sun, 16 Jan 2022 04:08:38 +0400 Subject: [PATCH] Wrap some foundation+pvd classes --- main.go | 21 +++++++++-- pgo/libs/libphysx-c.a | Bin 1952 -> 2904 bytes pgo/pgo.go | 64 ++++++++++++++++++++++++++++++---- pgo/physx-c/CPxFoundation.h | 4 +-- pgo/physx-c/CPxPvd.h | 20 +++++++++++ pgo/physx-c/CPxPvdTransport.h | 18 ++++++++++ pgo/wrap.cxx | 1 + 7 files changed, 117 insertions(+), 11 deletions(-) create mode 100755 pgo/physx-c/CPxPvd.h create mode 100755 pgo/physx-c/CPxPvdTransport.h diff --git a/main.go b/main.go index bd7b680..b10ebaa 100755 --- a/main.go +++ b/main.go @@ -1,8 +1,23 @@ package main -import "github.com/bloeys/physx-go/pgo" +import ( + "github.com/bloeys/physx-go/pgo" +) func main() { - pgo.Test() - println("Hey!!") + f := pgo.CreateFoundation() + defer f.Release() + println("foundation:", f) + + pvd := pgo.CreatePvd(f) + // defer pvd.Release() + println("Pvd:", pvd) + + pvdTr := pgo.DefaultPvdSocketTransportCreate("127.0.0.1", 9876, 500) + // defer pvdTr.Release() + println("Pvd transport:", pvdTr) + + // for { + // time.Sleep(1 / 60 * time.Second) + // } } diff --git a/pgo/libs/libphysx-c.a b/pgo/libs/libphysx-c.a index d55024c7cf326ff79fae427b2e9e4c0f7a8fbf09..823f088a9c19e78dd3f1a635a8013349576fa81a 100755 GIT binary patch literal 2904 zcmcIm%}*0S6n|}Lp^H&cy%-@`4GDVSL)fj77_vY$B414@CrFmkU8J$FO+QRMd8-$0 z{sEr6@egn#o;A@JZh9awQ6nefK@$^v)A`sbyV#;Q$?ThX@6G$oypNf^dM8uNu8%2$ zYGdoa**NF3AvVxP;%u~{0Kf%+&>=vi8=yS}phRfz*aje7IiNj?a?+J5?a>;}Yo<9h zo19Oj&BWb>$<$ObJ)bfQ>rYD6{w$d0+~UlPR{@?f4JuFHU!0pZ6XWS|m`qmhIh9Q- zQ_eY?X3@^unUalmavKHHUxwVtqMa$*?mAcBBSG!tW6Nt;W(teQJZ_4xsEu?nvso%Q z#j>w4uM}4$?6piKUq%}XPWF*q7D{xRE><(eQ^#9#;~m9-ABF(BG0LfSj5=n(b_c)# z(ry%1k=Br6Qa~8mAqs8K0TBp5uwfn|e(>`zZ+;T#T* zuyZ}aH$dGDB8_2gk=7|4st+!9VN$}|x&+`n^uSIfHk->9oszRwR40fVMqT&~*GCcx7+GhdfP3Ak1Oi96KX(PHVxp7Ik8A+cx4X_c^}|sdrlS!Z zTm(W#cR7Twk`HUdI>0EK5fTKvb+P)-@*-8FMOSFy#9y)G|2v5`$K){ z+)<=HNqx!90E5?;#`#2Vk53pSdS~w4Ry})WHnwmk9St6D#0oA2u* zMGvHLOZl(qUc7Kz`Fk49q L1*Uj$Whmu0#r>er delta 396 zcmca1wt#7#Sd3!U}W>7ZU@62@3;5 z7Lap //Needed for C.free //Functions -struct CPxFoundation* NewCPxFoundation(); -void FreeCPxFoundation(struct CPxFoundation*); +struct CPxFoundation* CPxCreateFoundation(); +void CPxFoundation_release(struct CPxFoundation*); + +struct CPxPvd* CPxCreatePvd(struct CPxFoundation*); +void CPxPvd_release(struct CPxPvd*); + +struct CPxPvdTransport* CPxDefaultPvdSocketTransportCreate(const char* address, int port, int timeoutMillis); +void CPxPvdTransport_release(struct CPxPvdTransport* cppt); */ import "C" +import "unsafe" -func Test() { - x := C.NewCPxFoundation() - println("Result:", x) - C.FreeCPxFoundation(x) +type Foundation struct { + cFoundation *C.struct_CPxFoundation +} + +func (f *Foundation) Release() { + C.CPxFoundation_release(f.cFoundation) +} + +func CreateFoundation() *Foundation { + + f := &Foundation{} + f.cFoundation = C.CPxCreateFoundation() + + return f +} + +type Pvd struct { + cPvd *C.struct_CPxPvd +} + +func (p *Pvd) Release() { + C.CPxPvd_release(p.cPvd) +} + +func CreatePvd(f *Foundation) *Pvd { + + p := &Pvd{} + p.cPvd = C.CPxCreatePvd(f.cFoundation) + + return p +} + +type PvdTransport struct { + cPvdTr *C.struct_CPxPvdTransport +} + +func (p *PvdTransport) Release() { + C.CPxPvdTransport_release(p.cPvdTr) +} + +func DefaultPvdSocketTransportCreate(host string, port, timeoutMillis int) *PvdTransport { + + hostCStr := C.CString(host) + defer C.free(unsafe.Pointer(hostCStr)) + + p := &PvdTransport{} + p.cPvdTr = C.CPxDefaultPvdSocketTransportCreate(hostCStr, C.int(port), C.int(timeoutMillis)) + + return p } diff --git a/pgo/physx-c/CPxFoundation.h b/pgo/physx-c/CPxFoundation.h index 6622b70..4edbd82 100755 --- a/pgo/physx-c/CPxFoundation.h +++ b/pgo/physx-c/CPxFoundation.h @@ -9,8 +9,8 @@ extern "C" { void* obj; }; - CPxAPI CSTRUCT CPxFoundation* NewCPxFoundation(); - CPxAPI void FreeCPxFoundation(CSTRUCT CPxFoundation* cpf); + CPxAPI CSTRUCT CPxFoundation* CPxCreateFoundation(); + CPxAPI void CPxFoundation_release(CSTRUCT CPxFoundation* cpf); #ifdef __cplusplus } #endif diff --git a/pgo/physx-c/CPxPvd.h b/pgo/physx-c/CPxPvd.h new file mode 100755 index 0000000..8053702 --- /dev/null +++ b/pgo/physx-c/CPxPvd.h @@ -0,0 +1,20 @@ +#ifndef __CPxPvd_H__ +#define __CPxPvd_H__ + +#include "CPxFoundation.h" + +#ifdef __cplusplus +extern "C" { +#endif + struct CPxPvd + { + void* obj; + }; + + CPxAPI CSTRUCT CPxPvd* CPxCreatePvd(CSTRUCT CPxFoundation*); + CPxAPI void CPxPvd_release(CSTRUCT CPxPvd* cpp); +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/pgo/physx-c/CPxPvdTransport.h b/pgo/physx-c/CPxPvdTransport.h new file mode 100755 index 0000000..fdaf709 --- /dev/null +++ b/pgo/physx-c/CPxPvdTransport.h @@ -0,0 +1,18 @@ +#ifndef __CPxPvdTransport_H__ +#define __CPxPvdTransport_H__ + +#ifdef __cplusplus +extern "C" { +#endif + struct CPxPvdTransport + { + void* obj; + }; + + CPxAPI CSTRUCT CPxPvdTransport* CPxDefaultPvdSocketTransportCreate(const char* address, int port, int timeoutMillis); + CPxAPI void CPxPvdTransport_release(CSTRUCT CPxPvdTransport* cppt); +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/pgo/wrap.cxx b/pgo/wrap.cxx index 4f669a2..b120050 100755 --- a/pgo/wrap.cxx +++ b/pgo/wrap.cxx @@ -1,3 +1,4 @@ #define CPxAPI #define CSTRUCT struct #include +#include