diff --git a/main.go b/main.go
index 8ddb951..e5a8d24 100755
--- a/main.go
+++ b/main.go
@@ -14,7 +14,7 @@ func contactHandler(cph pgo.ContactPairHeader) {
// points := pairs[i].GetContactPoints()
// for j := 0; j < pairs[i].GetContactPointCount(); j++ {
// pos := points[j].GetPos()
- // println("Contact at pos:", pos.String())
+ // fmt.Println("Contact at pos:", pos.String())
// }
// }
}
@@ -22,38 +22,39 @@ func contactHandler(cph pgo.ContactPairHeader) {
func main() {
f := pgo.CreateFoundation()
- println("foundation:", f)
+ fmt.Println("foundation:", f)
var pvd *pgo.Pvd
if pgo.PvdSupported {
pvdTr := pgo.DefaultPvdSocketTransportCreate("127.0.0.1", 5425, 100000)
- println("Pvd transport:", pvdTr)
+ fmt.Println("Pvd transport:", pvdTr)
pvd = pgo.CreatePvd(f)
- println("Pvd:", pvd)
- println("connected to PVD:", pvd.Connect(pvdTr, pgo.PvdInstrumentationFlag_eALL))
+ fmt.Println("Pvd:", pvd)
+ fmt.Println("connected to PVD:", pvd.Connect(pvdTr, pgo.PvdInstrumentationFlag_eALL))
}
ts := pgo.NewTolerancesScale(1, 9.81)
p := pgo.CreatePhysics(f, ts, false, pvd)
- println("Physics:", p)
+ fmt.Println("Physics:", p)
sd := pgo.NewSceneDesc(ts)
sd.SetGravity(pgo.NewVec3(0, -9.8, 0))
- sd.SetCpuDispatcher(pgo.DefaultCpuDispatcherCreate(2, nil).ToCpuDispatcher())
+
+ defaultCpuDispatcher := pgo.DefaultCpuDispatcherCreate(2, nil)
+ sd.SetCpuDispatcher(defaultCpuDispatcher.ToCpuDispatcher())
sd.SetOnContactCallback(contactHandler)
scene := p.CreateScene(sd)
- println("Scene:", scene)
+ fmt.Println("Scene:", scene)
if pgo.PvdSupported {
scenePvdClient := scene.GetScenePvdClient()
- println("ScenePvdClient:", scenePvdClient)
+ fmt.Println("ScenePvdClient:", scenePvdClient)
scenePvdClient.SetScenePvdFlag(pgo.PvdSceneFlag_eTRANSMIT_CONSTRAINTS, true)
scenePvdClient.SetScenePvdFlag(pgo.PvdSceneFlag_eTRANSMIT_CONTACTS, true)
scenePvdClient.SetScenePvdFlag(pgo.PvdSceneFlag_eTRANSMIT_SCENEQUERIES, true)
- scenePvdClient.Release()
}
//Add plane
@@ -123,14 +124,14 @@ func main() {
//Make some changes and print info
dynSphere.SetMass(1)
dynCapsule.SetMass(1)
- println("Box 1 mass:", dynBox.GetMass())
- println("Box 2 mass:", dynBox2.GetMass())
- println("Sphere mass:", dynSphere.GetMass())
- println("Capsule mass:", dynCapsule.GetMass())
+ fmt.Println("Box 1 mass:", dynBox.GetMass())
+ fmt.Println("Box 2 mass:", dynBox2.GetMass())
+ fmt.Println("Sphere mass:", dynSphere.GetMass())
+ fmt.Println("Capsule mass:", dynCapsule.GetMass())
- println("Capsule linear damping A:", dynCapsule.GetLinearDamping())
+ fmt.Println("Capsule linear damping A:", dynCapsule.GetLinearDamping())
dynCapsule.SetLinearDamping(0.05)
- println("Capsule linear damping B:", dynCapsule.GetLinearDamping())
+ fmt.Println("Capsule linear damping B:", dynCapsule.GetLinearDamping())
//Run simulation
// r := bufio.NewReader(os.Stdin)
@@ -152,7 +153,7 @@ func main() {
fmt.Printf("Raycast hit at dist (%v) and post %v\n", d, pos.String())
}
// fmt.Printf("\nRaycast hit: %v\n", rHit)
- // println("Press enter...")
+ // fmt.Println("Press enter...")
// r.ReadBytes('\n')
}
}
diff --git a/pgo/pgo.go b/pgo/pgo.go
index 0de8641..89de82d 100755
--- a/pgo/pgo.go
+++ b/pgo/pgo.go
@@ -26,26 +26,26 @@ var (
)
type Foundation struct {
- cFoundation *C.struct_CPxFoundation
+ cFoundation C.struct_CPxFoundation
}
func (f *Foundation) Release() {
C.CPxFoundation_release(f.cFoundation)
}
-func CreateFoundation() *Foundation {
+func CreateFoundation() Foundation {
- f := &Foundation{}
+ f := Foundation{}
f.cFoundation = C.CPxCreateFoundation()
return f
}
type Pvd struct {
- cPvd *C.struct_CPxPvd
+ cPvd C.struct_CPxPvd
}
-func (p *Pvd) Connect(pvdTr *PvdTransport, instFlag PvdInstrumentationFlag) bool {
+func (p *Pvd) Connect(pvdTr PvdTransport, instFlag PvdInstrumentationFlag) bool {
return bool(C.CPxPvd_connect(p.cPvd, pvdTr.cPvdTr, uint32(instFlag)))
}
@@ -53,7 +53,7 @@ func (p *Pvd) Release() {
C.CPxPvd_release(p.cPvd)
}
-func CreatePvd(f *Foundation) *Pvd {
+func CreatePvd(f Foundation) *Pvd {
p := &Pvd{}
p.cPvd = C.CPxCreatePvd(f.cFoundation)
@@ -62,17 +62,13 @@ func CreatePvd(f *Foundation) *Pvd {
}
type PvdTransport struct {
- cPvdTr *C.struct_CPxPvdTransport
+ cPvdTr C.struct_CPxPvdTransport
}
-func (p *PvdTransport) Release() {
- C.CPxPvdTransport_release(p.cPvdTr)
-}
-
-func DefaultPvdSocketTransportCreate(host string, port, timeoutMillis int) *PvdTransport {
+func DefaultPvdSocketTransportCreate(host string, port, timeoutMillis int) PvdTransport {
//This CString should NOT be freed because its stored internally. If this is freed connection to PVD will fail
- p := &PvdTransport{}
+ p := PvdTransport{}
p.cPvdTr = C.CPxDefaultPvdSocketTransportCreate(C.CString(host), C.int(port), C.int(timeoutMillis))
return p
}
@@ -81,8 +77,8 @@ type TolerancesScale struct {
cTolScale C.struct_CPxTolerancesScale
}
-func NewTolerancesScale(length, speed float32) *TolerancesScale {
- return &TolerancesScale{
+func NewTolerancesScale(length, speed float32) TolerancesScale {
+ return TolerancesScale{
cTolScale: C.struct_CPxTolerancesScale{
length: C.float(length),
speed: C.float(speed),
@@ -91,11 +87,11 @@ func NewTolerancesScale(length, speed float32) *TolerancesScale {
}
type Scene struct {
- cS *C.struct_CPxScene
+ cS C.struct_CPxScene
}
-func (s *Scene) GetScenePvdClient() *PvdSceneClient {
- return &PvdSceneClient{
+func (s *Scene) GetScenePvdClient() PvdSceneClient {
+ return PvdSceneClient{
cPvdSceneClient: C.CPxScene_getScenePvdClient(s.cS),
}
}
@@ -139,7 +135,7 @@ func (s *Scene) Raycast(origin, unitDir *Vec3, distance float32) (bool, RaycastB
return bool(ret), rb
}
-func (s *Scene) RaycastWithHitBuffer(origin, unitDir *Vec3, distance float32, rb *RaycastBuffer, touchesToRead uint) bool {
+func (s *Scene) RaycastWithHitBuffer(origin, unitDir *Vec3, distance float32, rb RaycastBuffer, touchesToRead uint) bool {
ret := C.CPxScene_raycastWithHitBuffer(s.cS, &origin.cV, &unitDir.cV, C.float(distance), rb.cRb, C.uint(touchesToRead))
return bool(ret)
@@ -178,9 +174,9 @@ func (rb *RaycastBuffer) Release() {
C.CPxRaycastBuffer_release(rb.cRb)
}
-func NewRaycastBuffer(maxTouches uint32) *RaycastBuffer {
+func NewRaycastBuffer(maxTouches uint32) RaycastBuffer {
- rb := &RaycastBuffer{
+ rb := RaycastBuffer{
cRb: C.NewCPxRaycastBufferWithAlloc(C.uint(maxTouches)),
}
@@ -240,29 +236,29 @@ func (rh *RaycastHit) GetUV() (float32, float32) {
}
type Physics struct {
- cPhysics *C.struct_CPxPhysics
+ cPhysics C.struct_CPxPhysics
}
-func (p *Physics) CreateScene(sd *SceneDesc) *Scene {
- return &Scene{
- cS: C.CPxPhysics_createScene(p.cPhysics, &sd.cSD),
+func (p *Physics) CreateScene(sd SceneDesc) Scene {
+ return Scene{
+ cS: C.CPxPhysics_createScene(p.cPhysics, sd.cSD),
}
}
-func (p *Physics) CreateMaterial(staticFriction, dynamicFriction, restitution float32) *Material {
- return &Material{
+func (p *Physics) CreateMaterial(staticFriction, dynamicFriction, restitution float32) Material {
+ return Material{
cM: C.CPxPhysics_createMaterial(p.cPhysics, C.float(staticFriction), C.float(dynamicFriction), C.float(restitution)),
}
}
-func (p *Physics) CreateRigidDynamic(tr *Transform) *RigidDynamic {
- return &RigidDynamic{
+func (p *Physics) CreateRigidDynamic(tr *Transform) RigidDynamic {
+ return RigidDynamic{
cRd: C.CPxPhysics_createRigidDynamic(p.cPhysics, &tr.cT),
}
}
-func (p *Physics) CreateRigidStatic(tr *Transform) *RigidStatic {
- return &RigidStatic{
+func (p *Physics) CreateRigidStatic(tr *Transform) RigidStatic {
+ return RigidStatic{
cRs: C.CPxPhysics_createRigidStatic(p.cPhysics, &tr.cT),
}
}
@@ -271,11 +267,11 @@ func (p *Physics) Release() {
C.CPxPhysics_release(p.cPhysics)
}
-func CreatePhysics(f *Foundation, ts *TolerancesScale, trackOutstandingAllocations bool, pvd *Pvd) *Physics {
+func CreatePhysics(f Foundation, ts TolerancesScale, trackOutstandingAllocations bool, pvd *Pvd) Physics {
- p := &Physics{}
+ p := Physics{}
if pvd != nil {
- p.cPhysics = C.CPxCreatePhysics(f.cFoundation, ts.cTolScale, C._Bool(trackOutstandingAllocations), pvd.cPvd)
+ p.cPhysics = C.CPxCreatePhysics(f.cFoundation, ts.cTolScale, C._Bool(trackOutstandingAllocations), &pvd.cPvd)
} else {
p.cPhysics = C.CPxCreatePhysics(f.cFoundation, ts.cTolScale, C._Bool(trackOutstandingAllocations), nil)
}
@@ -304,25 +300,25 @@ type Shape struct {
func (s *Shape) GetLocalPose() *Transform {
return &Transform{
- cT: C.CPxShape_getLocalPose(&s.cShape),
+ cT: C.CPxShape_getLocalPose(s.cShape),
}
}
func (s *Shape) SetLocalPose(tr *Transform) {
- C.CPxShape_setLocalPose(&s.cShape, &tr.cT)
+ C.CPxShape_setLocalPose(s.cShape, &tr.cT)
}
func (s *Shape) GetSimulationFilterData() FilterData {
return FilterData{
- cFilterData: C.CPxShape_getSimulationFilterData(&s.cShape),
+ cFilterData: C.CPxShape_getSimulationFilterData(s.cShape),
}
}
func (s *Shape) SetSimulationFilterData(fd *FilterData) {
- C.CPxShape_setSimulationFilterData(&s.cShape, &fd.cFilterData)
+ C.CPxShape_setSimulationFilterData(s.cShape, &fd.cFilterData)
}
-func CreateExclusiveShape(rigidActor RigidActor, geom *Geometry, mat *Material, shapeFlags ShapeFlags) Shape {
+func CreateExclusiveShape(rigidActor RigidActor, geom Geometry, mat Material, shapeFlags ShapeFlags) Shape {
return Shape{
cShape: C.createExclusiveShape(rigidActor.cRa, geom.cG, mat.cM, uint32(shapeFlags)),
}
@@ -355,24 +351,24 @@ func NewVec3(x, y, z float32) *Vec3 {
}
type CpuDispatcher struct {
- cCpuDisp *C.struct_CPxCpuDispatcher
+ cCpuDisp C.struct_CPxCpuDispatcher
}
type DefaultCpuDispatcher struct {
- cDefCpuDisp *C.struct_CPxDefaultCpuDispatcher
+ cDefCpuDisp C.struct_CPxDefaultCpuDispatcher
}
-func (d *DefaultCpuDispatcher) ToCpuDispatcher() *CpuDispatcher {
- return &CpuDispatcher{cCpuDisp: (*C.struct_CPxCpuDispatcher)(d.cDefCpuDisp)}
+func (d *DefaultCpuDispatcher) ToCpuDispatcher() CpuDispatcher {
+ return CpuDispatcher{cCpuDisp: C.CPxDefaultCpuDispatcher_toCPxCpuDispatcher(d.cDefCpuDisp)}
}
// DefaultCpuDispatcherCreate sets the number of threads used by physX.
// If affinityMasksPerThread is nil/zero then default masks are used, otherwise the size of the array
// must match the number of threads
-func DefaultCpuDispatcherCreate(numThreads uint32, affinityMasksPerThread []uint32) *DefaultCpuDispatcher {
+func DefaultCpuDispatcherCreate(numThreads uint32, affinityMasksPerThread []uint32) DefaultCpuDispatcher {
if len(affinityMasksPerThread) == 0 {
- return &DefaultCpuDispatcher{
+ return DefaultCpuDispatcher{
cDefCpuDisp: C.CPxDefaultCpuDispatcherCreate(C.uint(numThreads), nil),
}
}
@@ -382,7 +378,7 @@ func DefaultCpuDispatcherCreate(numThreads uint32, affinityMasksPerThread []uint
arr[i] = C.uint(affinityMasksPerThread[i])
}
- return &DefaultCpuDispatcher{
+ return DefaultCpuDispatcher{
cDefCpuDisp: C.CPxDefaultCpuDispatcherCreate(C.uint(numThreads), &arr[0]),
}
}
@@ -392,22 +388,22 @@ type SceneDesc struct {
}
func (sd *SceneDesc) SetGravity(v *Vec3) {
- C.CPxSceneDesc_set_gravity(&sd.cSD, v.cV)
+ C.CPxSceneDesc_set_gravity(sd.cSD, v.cV)
}
-func (sd *SceneDesc) SetCpuDispatcher(cd *CpuDispatcher) {
- C.CPxSceneDesc_set_cpuDispatcher(&sd.cSD, cd.cCpuDisp)
+func (sd *SceneDesc) SetCpuDispatcher(cd CpuDispatcher) {
+ C.CPxSceneDesc_set_cpuDispatcher(sd.cSD, cd.cCpuDisp)
}
// SetOnContactCallback sets the GLOBAL contact callback handler. Physx-c currently only supports 1 contact callback handler.
// Setting a contact callback handler overrides the previous one. Only the most recent one gets called.
func (sd *SceneDesc) SetOnContactCallback(cb func(ContactPairHeader)) {
contactCallback = cb
- C.CPxSceneDesc_set_onContactCallback(&sd.cSD, (C.CPxonContactCallback)(unsafe.Pointer(C.goOnContactCallback_cgo)))
+ C.CPxSceneDesc_set_onContactCallback(sd.cSD, (C.CPxonContactCallback)(unsafe.Pointer(C.goOnContactCallback_cgo)))
}
-func NewSceneDesc(ts *TolerancesScale) *SceneDesc {
- return &SceneDesc{
+func NewSceneDesc(ts TolerancesScale) SceneDesc {
+ return SceneDesc{
cSD: C.NewCPxSceneDesc(ts.cTolScale),
}
}
@@ -522,19 +518,15 @@ const (
)
type PvdSceneClient struct {
- cPvdSceneClient *C.struct_CPxPvdSceneClient
+ cPvdSceneClient C.struct_CPxPvdSceneClient
}
func (p *PvdSceneClient) SetScenePvdFlag(flag PvdSceneFlag, value bool) {
C.CPxPvdSceneClient_setScenePvdFlag(p.cPvdSceneClient, uint32(flag), C._Bool(value))
}
-func (p *PvdSceneClient) Release() {
- C.CPxPvdSceneClient_release(p.cPvdSceneClient)
-}
-
type Material struct {
- cM *C.struct_CPxMaterial
+ cM C.struct_CPxMaterial
}
type Plane struct {
@@ -578,16 +570,24 @@ type SphereGeometry struct {
cSg C.struct_CPxSphereGeometry
}
+func (sg *SphereGeometry) GetRadius() float32 {
+ return float32(sg.cSg.radius)
+}
+
+func (sg *SphereGeometry) SetRadius(r float32) {
+ sg.cSg.radius = C.float(r)
+}
+
// struct CPxGeometry CPxSphereGeometry_toCPxGeometry(struct CPxSphereGeometry*);
-func (sg *SphereGeometry) ToGeometry() *Geometry {
- return &Geometry{
+func (sg SphereGeometry) ToGeometry() Geometry {
+ return Geometry{
cG: C.CPxSphereGeometry_toCPxGeometry(&sg.cSg),
}
}
// struct CPxSphereGeometry NewCPxSphereGeometry(CPxReal radius);
-func NewSphereGeometry(radius float32) *SphereGeometry {
- return &SphereGeometry{
+func NewSphereGeometry(radius float32) SphereGeometry {
+ return SphereGeometry{
cSg: C.struct_CPxSphereGeometry{
radius: C.float(radius),
},
@@ -598,14 +598,28 @@ type BoxGeometry struct {
cBg C.struct_CPxBoxGeometry
}
-func (bg *BoxGeometry) ToGeometry() *Geometry {
- return &Geometry{
+// GetExtents returns the extents of each dimension of the box.
+// An extent is half the length total length.
+//
+// For example, a cube of size 1x1x1 would have an extent of 0.5 on each side
+func (bg *BoxGeometry) GetExtents() (ex, ey, ez float32) {
+ return float32(bg.cBg.hx), float32(bg.cBg.hy), float32(bg.cBg.hz)
+}
+
+func (bg *BoxGeometry) SetExtents(ex, ey, ez float32) {
+ bg.cBg.hx = C.float(ex)
+ bg.cBg.hy = C.float(ey)
+ bg.cBg.hz = C.float(ez)
+}
+
+func (bg BoxGeometry) ToGeometry() Geometry {
+ return Geometry{
cG: C.CPxBoxGeometry_toCPxGeometry(&bg.cBg),
}
}
-func NewBoxGeometry(hx, hy, hz float32) *BoxGeometry {
- return &BoxGeometry{
+func NewBoxGeometry(hx, hy, hz float32) BoxGeometry {
+ return BoxGeometry{
cBg: C.struct_CPxBoxGeometry{
hx: C.float(hx),
hy: C.float(hy),
@@ -618,14 +632,23 @@ type CapsuleGeometry struct {
cCg C.struct_CPxCapsuleGeometry
}
-func (bg *CapsuleGeometry) ToGeometry() *Geometry {
- return &Geometry{
+func (bg *CapsuleGeometry) GetParams() (radius, extent float32) {
+ return float32(bg.cCg.radius), float32(bg.cCg.halfHeight)
+}
+
+func (bg *CapsuleGeometry) SetParams(radius, extent float32) {
+ bg.cCg.radius = C.float(radius)
+ bg.cCg.halfHeight = C.float(extent)
+}
+
+func (bg CapsuleGeometry) ToGeometry() Geometry {
+ return Geometry{
cG: C.CPxCapsuleGeometry_toCPxGeometry(&bg.cCg),
}
}
-func NewCapsuleGeometry(radius, halfHeight float32) *CapsuleGeometry {
- return &CapsuleGeometry{
+func NewCapsuleGeometry(radius, halfHeight float32) CapsuleGeometry {
+ return CapsuleGeometry{
cCg: C.struct_CPxCapsuleGeometry{
radius: C.float(radius),
halfHeight: C.float(halfHeight),
@@ -642,13 +665,13 @@ type RigidActor struct {
}
func (ra *RigidActor) SetSimFilterData(fd *FilterData) {
- C.CPxRigidActor_setSimFilterData(&ra.cRa, &fd.cFilterData)
+ C.CPxRigidActor_setSimFilterData(ra.cRa, fd.cFilterData)
}
// CPxAPI void CPxRigidActor_setSimFilterData(CSTRUCT CPxRigidActor* cra, CSTRUCT CPxFilterData* cfd);
type RigidStatic struct {
- cRs *C.struct_CPxRigidStatic
+ cRs C.struct_CPxRigidStatic
}
func (rs *RigidStatic) ToActor() Actor {
@@ -663,8 +686,8 @@ func (rs *RigidStatic) ToRigidActor() RigidActor {
}
}
-func CreatePlane(p *Physics, plane *Plane, mat *Material) *RigidStatic {
- return &RigidStatic{
+func CreatePlane(p Physics, plane *Plane, mat Material) RigidStatic {
+ return RigidStatic{
cRs: C.CPxCreatePlane(p.cPhysics, &plane.cP, mat.cM),
}
}
diff --git a/pgo/physx-c/CExtSimpleFactory.h b/pgo/physx-c/CExtSimpleFactory.h
index 7fc668b..f2849e0 100755
--- a/pgo/physx-c/CExtSimpleFactory.h
+++ b/pgo/physx-c/CExtSimpleFactory.h
@@ -10,7 +10,7 @@
extern "C" {
#endif
- CPxAPI CSTRUCT CPxRigidDynamic* CPxCreateDynamic(CSTRUCT CPxPhysics* sdk, CSTRUCT CPxTransform* transform, CSTRUCT CPxGeometry geometry, CSTRUCT CPxMaterial* material, CPxReal density, CSTRUCT CPxTransform* shapeOffset);
+ CPxAPI CSTRUCT CPxRigidDynamic CPxCreateDynamic(CSTRUCT CPxPhysics sdk, CSTRUCT CPxTransform* transform, CSTRUCT CPxGeometry geometry, CSTRUCT CPxMaterial material, CPxReal density, CSTRUCT CPxTransform* shapeOffset);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxActor.h b/pgo/physx-c/CPxActor.h
index e3afb09..509ea2f 100755
--- a/pgo/physx-c/CPxActor.h
+++ b/pgo/physx-c/CPxActor.h
@@ -10,7 +10,7 @@ extern "C" {
void* obj;
};
- CPxAPI void CPxActor_release(CSTRUCT CPxActor*);
+ CPxAPI void CPxActor_release(CSTRUCT CPxActor);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxCpuDispatcher.h b/pgo/physx-c/CPxCpuDispatcher.h
index bde6a4a..999fee9 100755
--- a/pgo/physx-c/CPxCpuDispatcher.h
+++ b/pgo/physx-c/CPxCpuDispatcher.h
@@ -10,14 +10,6 @@ extern "C" {
void* obj;
};
- ///
- /// This only frees C representation of the base class (the CPxCpuDispatcher struct). obj is NOT freed.
- /// To release the PhysX resources release must be called on the actual C implementation (e.g. CPxDefaultCpuDispatcher_release)
- ///
- ///
- ///
- CPxAPI void CPxCpuDispatcher_release(CSTRUCT CPxCpuDispatcher*);
-
#ifdef __cplusplus
}
#endif
diff --git a/pgo/physx-c/CPxDefaultCpuDispatcher.h b/pgo/physx-c/CPxDefaultCpuDispatcher.h
index be7f913..411ece6 100755
--- a/pgo/physx-c/CPxDefaultCpuDispatcher.h
+++ b/pgo/physx-c/CPxDefaultCpuDispatcher.h
@@ -11,9 +11,9 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxDefaultCpuDispatcher* CPxDefaultCpuDispatcherCreate(CPxU32 numThreads, CPxU32* affinityMasks);
- CPxAPI CSTRUCT CPxCpuDispatcher* CPxDefaultCpuDispatcher_toCPxCpuDispatcher(CSTRUCT CPxDefaultCpuDispatcher* cdcd);
- CPxAPI void CPxDefaultCpuDispatcher_release(CSTRUCT CPxDefaultCpuDispatcher* cdcd);
+ CPxAPI CSTRUCT CPxDefaultCpuDispatcher CPxDefaultCpuDispatcherCreate(CPxU32 numThreads, CPxU32* affinityMasks);
+ CPxAPI CSTRUCT CPxCpuDispatcher CPxDefaultCpuDispatcher_toCPxCpuDispatcher(CSTRUCT CPxDefaultCpuDispatcher cdcd);
+ CPxAPI void CPxDefaultCpuDispatcher_release(CSTRUCT CPxDefaultCpuDispatcher cdcd);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxFoundation.h b/pgo/physx-c/CPxFoundation.h
index 7e40b98..1dd2302 100755
--- a/pgo/physx-c/CPxFoundation.h
+++ b/pgo/physx-c/CPxFoundation.h
@@ -9,8 +9,8 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxFoundation* CPxCreateFoundation();
- CPxAPI void CPxFoundation_release(CSTRUCT CPxFoundation* cpf);
+ CPxAPI CSTRUCT CPxFoundation CPxCreateFoundation();
+ CPxAPI void CPxFoundation_release(CSTRUCT CPxFoundation cpf);
#ifdef __cplusplus
}
#endif
diff --git a/pgo/physx-c/CPxMaterial.h b/pgo/physx-c/CPxMaterial.h
index 8c4ef56..df405df 100755
--- a/pgo/physx-c/CPxMaterial.h
+++ b/pgo/physx-c/CPxMaterial.h
@@ -10,8 +10,6 @@ extern "C" {
void* obj;
};
- CPxAPI void CPxMaterial_release(CSTRUCT CPxMaterial*);
-
#ifdef __cplusplus
}
#endif
diff --git a/pgo/physx-c/CPxPhysics.h b/pgo/physx-c/CPxPhysics.h
index 38dc155..1640723 100755
--- a/pgo/physx-c/CPxPhysics.h
+++ b/pgo/physx-c/CPxPhysics.h
@@ -19,13 +19,13 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxPhysics* CPxCreatePhysics(CSTRUCT CPxFoundation* cfoundation, CSTRUCT CPxTolerancesScale cscale, bool trackOutstandingAllocations, CSTRUCT CPxPvd* cpvd);
- CPxAPI CSTRUCT CPxScene* CPxPhysics_createScene(CSTRUCT CPxPhysics*, CSTRUCT CPxSceneDesc*);
- CPxAPI CSTRUCT CPxMaterial* CPxPhysics_createMaterial(CSTRUCT CPxPhysics*, CPxReal staticFriction, CPxReal dynamicFriction, CPxReal restitution);
- CPxAPI CSTRUCT CPxRigidDynamic* CPxPhysics_createRigidDynamic(CSTRUCT CPxPhysics* cp, CSTRUCT CPxTransform* ctr);
- CPxAPI CSTRUCT CPxRigidStatic* CPxPhysics_createRigidStatic(CSTRUCT CPxPhysics* cp, CSTRUCT CPxTransform* ctr);
+ CPxAPI CSTRUCT CPxPhysics CPxCreatePhysics(CSTRUCT CPxFoundation cfoundation, CSTRUCT CPxTolerancesScale cscale, bool trackOutstandingAllocations, CSTRUCT CPxPvd* cpvd);
+ CPxAPI CSTRUCT CPxScene CPxPhysics_createScene(CSTRUCT CPxPhysics, CSTRUCT CPxSceneDesc);
+ CPxAPI CSTRUCT CPxMaterial CPxPhysics_createMaterial(CSTRUCT CPxPhysics, CPxReal staticFriction, CPxReal dynamicFriction, CPxReal restitution);
+ CPxAPI CSTRUCT CPxRigidDynamic CPxPhysics_createRigidDynamic(CSTRUCT CPxPhysics cp, CSTRUCT CPxTransform* ctr);
+ CPxAPI CSTRUCT CPxRigidStatic CPxPhysics_createRigidStatic(CSTRUCT CPxPhysics cp, CSTRUCT CPxTransform* ctr);
- CPxAPI void CPxPhysics_release(CSTRUCT CPxPhysics*);
+ CPxAPI void CPxPhysics_release(CSTRUCT CPxPhysics);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxPvd.h b/pgo/physx-c/CPxPvd.h
index 2fb3cb7..de7f16c 100755
--- a/pgo/physx-c/CPxPvd.h
+++ b/pgo/physx-c/CPxPvd.h
@@ -62,9 +62,9 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxPvd* CPxCreatePvd(CSTRUCT CPxFoundation*);
- CPxAPI bool CPxPvd_connect(CSTRUCT CPxPvd*, CSTRUCT CPxPvdTransport*, CENUM CPxPvdInstrumentationFlag);
- CPxAPI void CPxPvd_release(CSTRUCT CPxPvd* cpp);
+ CPxAPI CSTRUCT CPxPvd CPxCreatePvd(CSTRUCT CPxFoundation);
+ CPxAPI bool CPxPvd_connect(CSTRUCT CPxPvd, CSTRUCT CPxPvdTransport, CENUM CPxPvdInstrumentationFlag);
+ CPxAPI void CPxPvd_release(CSTRUCT CPxPvd cpp);
#ifdef __cplusplus
}
#endif
diff --git a/pgo/physx-c/CPxPvdSceneClient.h b/pgo/physx-c/CPxPvdSceneClient.h
index 5a65296..693f442 100755
--- a/pgo/physx-c/CPxPvdSceneClient.h
+++ b/pgo/physx-c/CPxPvdSceneClient.h
@@ -17,14 +17,7 @@ extern "C" {
void* obj;
};
- CPxAPI void CPxPvdSceneClient_setScenePvdFlag(CSTRUCT CPxPvdSceneClient* c, CENUM CPxPvdSceneFlag flag, bool value);
-
- ///
- /// This only releases the C struct
- ///
- ///
- ///
- CPxAPI void CPxPvdSceneClient_release(CSTRUCT CPxPvdSceneClient*);
+ CPxAPI void CPxPvdSceneClient_setScenePvdFlag(CSTRUCT CPxPvdSceneClient c, CENUM CPxPvdSceneFlag flag, bool value);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxPvdTransport.h b/pgo/physx-c/CPxPvdTransport.h
index 4c077a2..8ecfe9b 100755
--- a/pgo/physx-c/CPxPvdTransport.h
+++ b/pgo/physx-c/CPxPvdTransport.h
@@ -9,8 +9,7 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxPvdTransport* CPxDefaultPvdSocketTransportCreate(const char* address, int port, int timeoutMillis);
- CPxAPI void CPxPvdTransport_release(CSTRUCT CPxPvdTransport* cppt);
+ CPxAPI CSTRUCT CPxPvdTransport CPxDefaultPvdSocketTransportCreate(const char* address, int port, int timeoutMillis);
#ifdef __cplusplus
}
#endif
diff --git a/pgo/physx-c/CPxRigidActor.h b/pgo/physx-c/CPxRigidActor.h
index 4386b1b..c7bb1bd 100755
--- a/pgo/physx-c/CPxRigidActor.h
+++ b/pgo/physx-c/CPxRigidActor.h
@@ -13,7 +13,7 @@ extern "C" {
};
//Sets the CPxFilterData on all the shapes of the actor.
- CPxAPI void CPxRigidActor_setSimFilterData(CSTRUCT CPxRigidActor* cra, CSTRUCT CPxFilterData* cfd);
+ CPxAPI void CPxRigidActor_setSimFilterData(CSTRUCT CPxRigidActor cra, CSTRUCT CPxFilterData cfd);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxRigidActorExt.h b/pgo/physx-c/CPxRigidActorExt.h
index ac61a6b..fd58ba8 100755
--- a/pgo/physx-c/CPxRigidActorExt.h
+++ b/pgo/physx-c/CPxRigidActorExt.h
@@ -11,7 +11,7 @@
extern "C" {
#endif
- CPxAPI CSTRUCT CPxShape createExclusiveShape(CSTRUCT CPxRigidActor actor, CSTRUCT CPxGeometry geometry, CSTRUCT CPxMaterial* material, CENUM CPxShapeFlags shapeFlags);
+ CPxAPI CSTRUCT CPxShape createExclusiveShape(CSTRUCT CPxRigidActor actor, CSTRUCT CPxGeometry geometry, CSTRUCT CPxMaterial material, CENUM CPxShapeFlags shapeFlags);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxRigidDynamic.h b/pgo/physx-c/CPxRigidDynamic.h
index 23b8013..dc9719c 100755
--- a/pgo/physx-c/CPxRigidDynamic.h
+++ b/pgo/physx-c/CPxRigidDynamic.h
@@ -18,37 +18,37 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxActor CPxRigidDynamic_toCPxActor(CSTRUCT CPxRigidDynamic*);
- CPxAPI CSTRUCT CPxRigidActor CPxRigidDynamic_toCPxRigidActor(CSTRUCT CPxRigidDynamic*);
+ CPxAPI CSTRUCT CPxActor CPxRigidDynamic_toCPxActor(CSTRUCT CPxRigidDynamic);
+ CPxAPI CSTRUCT CPxRigidActor CPxRigidDynamic_toCPxRigidActor(CSTRUCT CPxRigidDynamic);
- CPxAPI void CPxRigidDynamic_addForce(CSTRUCT CPxRigidDynamic* crd, CSTRUCT CPxVec3* force, CENUM CPxForceMode fmode, bool autoAwake);
- CPxAPI void CPxRigidDynamic_addTorque(CSTRUCT CPxRigidDynamic* crd, CSTRUCT CPxVec3* torque, CENUM CPxForceMode fmode, bool autoAwake);
+ CPxAPI void CPxRigidDynamic_addForce(CSTRUCT CPxRigidDynamic crd, CSTRUCT CPxVec3* force, CENUM CPxForceMode fmode, bool autoAwake);
+ CPxAPI void CPxRigidDynamic_addTorque(CSTRUCT CPxRigidDynamic crd, CSTRUCT CPxVec3* torque, CENUM CPxForceMode fmode, bool autoAwake);
- CPxAPI void CPxRigidDynamic_setLinearDamping(CSTRUCT CPxRigidDynamic* crd, CPxReal damping);
- CPxAPI void CPxRigidDynamic_setAngularDamping(CSTRUCT CPxRigidDynamic* crd, CPxReal damping);
- CPxAPI CPxReal CPxRigidDynamic_getLinearDamping(CSTRUCT CPxRigidDynamic* crd);
- CPxAPI CPxReal CPxRigidDynamic_getAngularDamping(CSTRUCT CPxRigidDynamic* crd);
+ CPxAPI void CPxRigidDynamic_setLinearDamping(CSTRUCT CPxRigidDynamic crd, CPxReal damping);
+ CPxAPI void CPxRigidDynamic_setAngularDamping(CSTRUCT CPxRigidDynamic crd, CPxReal damping);
+ CPxAPI CPxReal CPxRigidDynamic_getLinearDamping(CSTRUCT CPxRigidDynamic crd);
+ CPxAPI CPxReal CPxRigidDynamic_getAngularDamping(CSTRUCT CPxRigidDynamic crd);
- CPxAPI CSTRUCT CPxVec3 CPxRigidDynamic_getLinearVelocity(CSTRUCT CPxRigidDynamic* crd);
- CPxAPI CSTRUCT CPxVec3 CPxRigidDynamic_getAngularVelocity(CSTRUCT CPxRigidDynamic* crd);
+ CPxAPI CSTRUCT CPxVec3 CPxRigidDynamic_getLinearVelocity(CSTRUCT CPxRigidDynamic crd);
+ CPxAPI CSTRUCT CPxVec3 CPxRigidDynamic_getAngularVelocity(CSTRUCT CPxRigidDynamic crd);
- CPxAPI void CPxRigidDynamic_setMass(CSTRUCT CPxRigidDynamic* crd, CPxReal mass);
- CPxAPI CPxReal CPxRigidDynamic_getMass(CSTRUCT CPxRigidDynamic* crd);
+ CPxAPI void CPxRigidDynamic_setMass(CSTRUCT CPxRigidDynamic crd, CPxReal mass);
+ CPxAPI CPxReal CPxRigidDynamic_getMass(CSTRUCT CPxRigidDynamic crd);
- CPxAPI void CPxRigidDynamic_setRigidBodyFlag(CSTRUCT CPxRigidDynamic* crd, CENUM CPxRigidBodyFlag flag, bool value);
- CPxAPI void CPxRigidDynamic_setRigidBodyFlags(CSTRUCT CPxRigidDynamic* crd, CENUM CPxRigidBodyFlag flags);
- CPxAPI CENUM CPxRigidBodyFlag CPxRigidDynamic_getRigidBodyFlags(CSTRUCT CPxRigidDynamic* crd);
+ CPxAPI void CPxRigidDynamic_setRigidBodyFlag(CSTRUCT CPxRigidDynamic crd, CENUM CPxRigidBodyFlag flag, bool value);
+ CPxAPI void CPxRigidDynamic_setRigidBodyFlags(CSTRUCT CPxRigidDynamic crd, CENUM CPxRigidBodyFlag flags);
+ CPxAPI CENUM CPxRigidBodyFlag CPxRigidDynamic_getRigidBodyFlags(CSTRUCT CPxRigidDynamic crd);
- CPxAPI void CPxRigidDynamic_setRigidDynamicLockFlag(CSTRUCT CPxRigidDynamic* crd, CENUM CPxRigidDynamicLockFlag flag, bool value);
- CPxAPI void CPxRigidDynamic_setRigidDynamicLockFlags(CSTRUCT CPxRigidDynamic* crd, CENUM CPxRigidDynamicLockFlag flags);
- CPxAPI CENUM CPxRigidDynamicLockFlag CPxRigidDynamic_getRigidDynamicLockFlags(CSTRUCT CPxRigidDynamic* crd);
+ CPxAPI void CPxRigidDynamic_setRigidDynamicLockFlag(CSTRUCT CPxRigidDynamic crd, CENUM CPxRigidDynamicLockFlag flag, bool value);
+ CPxAPI void CPxRigidDynamic_setRigidDynamicLockFlags(CSTRUCT CPxRigidDynamic crd, CENUM CPxRigidDynamicLockFlag flags);
+ CPxAPI CENUM CPxRigidDynamicLockFlag CPxRigidDynamic_getRigidDynamicLockFlags(CSTRUCT CPxRigidDynamic crd);
- CPxAPI void CPxRigidDynamic_putToSleep(CSTRUCT CPxRigidDynamic* crd);
- CPxAPI CSTRUCT CPxTransform CPxRigidDynamic_getGlobalPose(CSTRUCT CPxRigidDynamic* crd);
- CPxAPI void CPxRigidDynamic_setGlobalPose(CSTRUCT CPxRigidDynamic* crd, CSTRUCT CPxTransform* tr, bool autoAwake);
+ CPxAPI void CPxRigidDynamic_putToSleep(CSTRUCT CPxRigidDynamic crd);
+ CPxAPI CSTRUCT CPxTransform CPxRigidDynamic_getGlobalPose(CSTRUCT CPxRigidDynamic crd);
+ CPxAPI void CPxRigidDynamic_setGlobalPose(CSTRUCT CPxRigidDynamic crd, CSTRUCT CPxTransform* tr, bool autoAwake);
- CPxAPI CSTRUCT CPxTransform CPxRigidDynamic_getCMassLocalPose(CSTRUCT CPxRigidDynamic* crd);
- CPxAPI void CPxRigidDynamic_setCMassLocalPose(CSTRUCT CPxRigidDynamic* crd, CSTRUCT CPxTransform* tr);
+ CPxAPI CSTRUCT CPxTransform CPxRigidDynamic_getCMassLocalPose(CSTRUCT CPxRigidDynamic crd);
+ CPxAPI void CPxRigidDynamic_setCMassLocalPose(CSTRUCT CPxRigidDynamic crd, CSTRUCT CPxTransform* tr);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxRigidStatic.h b/pgo/physx-c/CPxRigidStatic.h
index b3d594b..b57bc65 100755
--- a/pgo/physx-c/CPxRigidStatic.h
+++ b/pgo/physx-c/CPxRigidStatic.h
@@ -13,8 +13,8 @@ extern "C" {
void* obj;
};
- CPxAPI CSTRUCT CPxActor CPxRigidStatic_toCPxActor(CSTRUCT CPxRigidStatic*);
- CPxAPI CSTRUCT CPxRigidActor CPxRigidStatic_toCPxRigidActor(CSTRUCT CPxRigidStatic*);
+ CPxAPI CSTRUCT CPxActor CPxRigidStatic_toCPxActor(CSTRUCT CPxRigidStatic);
+ CPxAPI CSTRUCT CPxRigidActor CPxRigidStatic_toCPxRigidActor(CSTRUCT CPxRigidStatic);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxScene.h b/pgo/physx-c/CPxScene.h
index 64a0340..15e4b2a 100755
--- a/pgo/physx-c/CPxScene.h
+++ b/pgo/physx-c/CPxScene.h
@@ -19,20 +19,20 @@ extern "C" {
CPxU32 scratchBufferSize;
};
- CPxAPI CSTRUCT CPxPvdSceneClient* CPxScene_getScenePvdClient(CSTRUCT CPxScene*);
- CPxAPI void CPxScene_addActor(CSTRUCT CPxScene*, CSTRUCT CPxActor actor);
- CPxAPI void CPxScene_simulate(CSTRUCT CPxScene*, CPxReal elapsedTime);
- CPxAPI void CPxScene_collide(CSTRUCT CPxScene*, CPxReal elapsedTime);
- CPxAPI bool CPxScene_fetchCollision(CSTRUCT CPxScene*, bool block);
- CPxAPI void CPxScene_advance(CSTRUCT CPxScene*);
- CPxAPI bool CPxScene_fetchResults(CSTRUCT CPxScene*, bool block, CPxU32* errorState);
+ CPxAPI CSTRUCT CPxPvdSceneClient CPxScene_getScenePvdClient(CSTRUCT CPxScene);
+ CPxAPI void CPxScene_addActor(CSTRUCT CPxScene, CSTRUCT CPxActor actor);
+ CPxAPI void CPxScene_simulate(CSTRUCT CPxScene, CPxReal elapsedTime);
+ CPxAPI void CPxScene_collide(CSTRUCT CPxScene, CPxReal elapsedTime);
+ CPxAPI bool CPxScene_fetchCollision(CSTRUCT CPxScene, bool block);
+ CPxAPI void CPxScene_advance(CSTRUCT CPxScene);
+ CPxAPI bool CPxScene_fetchResults(CSTRUCT CPxScene, bool block, CPxU32* errorState);
//Does a scene raycast. Allocates memory for hitRet and then reads data into it. It is the callers responsibility to free.
- CPxAPI bool CPxScene_raycast(CSTRUCT CPxScene* cs, CSTRUCT CPxVec3* origin, CSTRUCT CPxVec3* unitDir, CPxReal distance, CSTRUCT CPxRaycastBuffer** hitRet);
+ CPxAPI bool CPxScene_raycast(CSTRUCT CPxScene cs, CSTRUCT CPxVec3* origin, CSTRUCT CPxVec3* unitDir, CPxReal distance, CSTRUCT CPxRaycastBuffer** hitRet);
//Does a scene raycast. 'hit' must be pre-allocated as NO new allocation will happen in the function.
//hit->touches will be filled up to 'touchesToRead' and must also be pre-allocated. If the hit produces more touches than 'touchesToRead' then the additional touches will be ignored.
- CPxAPI bool CPxScene_raycastWithHitBuffer(CSTRUCT CPxScene* cs, CSTRUCT CPxVec3* origin, CSTRUCT CPxVec3* unitDir, CPxReal distance, CSTRUCT CPxRaycastBuffer* hit, CPxU32 touchesToRead);
+ CPxAPI bool CPxScene_raycastWithHitBuffer(CSTRUCT CPxScene cs, CSTRUCT CPxVec3* origin, CSTRUCT CPxVec3* unitDir, CPxReal distance, CSTRUCT CPxRaycastBuffer* hit, CPxU32 touchesToRead);
///
/// Creates a scratch buffer thats a multiple of 16K to be used by the scene when running CPxScene_simulate.
@@ -40,9 +40,9 @@ extern "C" {
/// If multiples passed are zero then any existing buffers are cleared
///
///
- CPxAPI void CPxScene_setScratchBuffer(CSTRUCT CPxScene*, CPxU32 multiplesOf16k);
+ CPxAPI void CPxScene_setScratchBuffer(CSTRUCT CPxScene, CPxU32 multiplesOf16k);
- CPxAPI void CPxScene_release(CSTRUCT CPxScene*);
+ CPxAPI void CPxScene_release(CSTRUCT CPxScene);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxSceneDesc.h b/pgo/physx-c/CPxSceneDesc.h
index 3f65633..edbbcb8 100755
--- a/pgo/physx-c/CPxSceneDesc.h
+++ b/pgo/physx-c/CPxSceneDesc.h
@@ -21,8 +21,8 @@ extern "C" {
///
///
CPxAPI CSTRUCT CPxSceneDesc NewCPxSceneDesc(CSTRUCT CPxTolerancesScale);
- CPxAPI void CPxSceneDesc_set_gravity(CSTRUCT CPxSceneDesc*, CSTRUCT CPxVec3);
- CPxAPI void CPxSceneDesc_set_cpuDispatcher(CSTRUCT CPxSceneDesc*, CSTRUCT CPxCpuDispatcher*);
+ CPxAPI void CPxSceneDesc_set_gravity(CSTRUCT CPxSceneDesc, CSTRUCT CPxVec3);
+ CPxAPI void CPxSceneDesc_set_cpuDispatcher(CSTRUCT CPxSceneDesc, CSTRUCT CPxCpuDispatcher);
//CPxSceneDesc_set_onContactCallback sets the contact callback handler of the given scene descriptor.
@@ -30,8 +30,8 @@ extern "C" {
//Therefore, the callback handler MUST copy data it wishes to keep for longer than the lifetime of the callback handler, as the memory it was handed might be reused/freed.
//
//NOTE: This function assumes you are using the default physx-c callback handler. Do NOT use this function if you set 'sceneDesc->simulationEventCallback' with your own custom implementation.
- CPxAPI void CPxSceneDesc_set_onContactCallback(CSTRUCT CPxSceneDesc*, CPxonContactCallback cb);
- CPxAPI void FreeCPxSceneDesc(CSTRUCT CPxSceneDesc*);
+ CPxAPI void CPxSceneDesc_set_onContactCallback(CSTRUCT CPxSceneDesc, CPxonContactCallback cb);
+ CPxAPI void FreeCPxSceneDesc(CSTRUCT CPxSceneDesc);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxShape.h b/pgo/physx-c/CPxShape.h
index 48ac2a4..1a730e0 100755
--- a/pgo/physx-c/CPxShape.h
+++ b/pgo/physx-c/CPxShape.h
@@ -13,10 +13,10 @@ extern "C" {
void* obj;
};
- CPxAPI void CPxShape_setLocalPose(CSTRUCT CPxShape* cs, CSTRUCT CPxTransform* tr);
- CPxAPI CSTRUCT CPxTransform CPxShape_getLocalPose(CSTRUCT CPxShape* cs);
- CPxAPI CSTRUCT CPxFilterData CPxShape_getSimulationFilterData(CSTRUCT CPxShape* cs);
- CPxAPI void CPxShape_setSimulationFilterData(CSTRUCT CPxShape* cs, CSTRUCT CPxFilterData* cfd);
+ CPxAPI void CPxShape_setLocalPose(CSTRUCT CPxShape cs, CSTRUCT CPxTransform* tr);
+ CPxAPI CSTRUCT CPxTransform CPxShape_getLocalPose(CSTRUCT CPxShape cs);
+ CPxAPI CSTRUCT CPxFilterData CPxShape_getSimulationFilterData(CSTRUCT CPxShape cs);
+ CPxAPI void CPxShape_setSimulationFilterData(CSTRUCT CPxShape cs, CSTRUCT CPxFilterData* cfd);
#ifdef __cplusplus
}
diff --git a/pgo/physx-c/CPxSimpleFactory.h b/pgo/physx-c/CPxSimpleFactory.h
index 3efd88b..925fefe 100755
--- a/pgo/physx-c/CPxSimpleFactory.h
+++ b/pgo/physx-c/CPxSimpleFactory.h
@@ -10,7 +10,7 @@
extern "C" {
#endif
- CPxAPI CSTRUCT CPxRigidStatic* CPxCreatePlane(CSTRUCT CPxPhysics* sdk, CSTRUCT CPxPlane* plane, CSTRUCT CPxMaterial* material);
+ CPxAPI CSTRUCT CPxRigidStatic CPxCreatePlane(CSTRUCT CPxPhysics sdk, CSTRUCT CPxPlane* plane, CSTRUCT CPxMaterial material);
#ifdef __cplusplus
}
diff --git a/pgo/rigiddynamic.go b/pgo/rigiddynamic.go
index e095306..ceaf84b 100755
--- a/pgo/rigiddynamic.go
+++ b/pgo/rigiddynamic.go
@@ -14,7 +14,7 @@ package pgo
import "C"
type RigidDynamic struct {
- cRd *C.struct_CPxRigidDynamic
+ cRd C.struct_CPxRigidDynamic
}
func (rd *RigidDynamic) AddForce(force *Vec3, fmode ForceMode, autoAwake bool) {
@@ -121,8 +121,8 @@ func (rd *RigidDynamic) ToRigidActor() RigidActor {
}
}
-func CreateDynamic(p *Physics, t *Transform, g *Geometry, m *Material, density float32, shapeOffset *Transform) *RigidDynamic {
- return &RigidDynamic{
+func CreateDynamic(p Physics, t *Transform, g Geometry, m Material, density float32, shapeOffset *Transform) RigidDynamic {
+ return RigidDynamic{
cRd: C.CPxCreateDynamic(p.cPhysics, &t.cT, g.cG, m.cM, C.float(density), &shapeOffset.cT),
}
}
diff --git a/switch-physx-mode.sh b/switch-physx-mode.sh
new file mode 100755
index 0000000..2784688
--- /dev/null
+++ b/switch-physx-mode.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+set -e
+
+if [[ $# -ne 1 ]]; then
+ echo -e "1) Checked mode\n2) Release mode"
+ exit 0
+fi
+
+mode=$1
+physxBinDir="../physx/physx/bin/win.x86_64.vc142.mt"
+physxCBinDir="../physx-c/x64"
+if [[ $mode -eq 1 ]]; then
+
+ physxCheckedBinDir="$physxBinDir/checked"
+ cp "$physxCheckedBinDir/PhysX_64.dll" "$physxCheckedBinDir/PhysXCommon_64.dll" "$physxCheckedBinDir/PhysXFoundation_64.dll" .
+
+ physxCCheckedBinDir="$physxCBinDir/Checked"
+ cp "$physxCCheckedBinDir/physx-c.dll" .
+
+ echo "Switched PhysX to Checked mode"
+
+elif [[ $mode -eq 2 ]]; then
+
+ physxReleaseBinDir="$physxBinDir/release"
+ cp "$physxReleaseBinDir/PhysX_64.dll" "$physxReleaseBinDir/PhysXCommon_64.dll" "$physxReleaseBinDir/PhysXFoundation_64.dll" .
+
+ physxCReleaseBinDir="$physxCBinDir/Release"
+ cp "$physxCReleaseBinDir/physx-c.dll" .
+
+ echo "Switched PhysX to Release mode"
+
+else
+
+ echo "Unknown mode. Please select 1 or 2"
+ exit 1
+
+fi