More rigiddynamic stuff

This commit is contained in:
bloeys
2022-01-28 07:00:46 +04:00
parent 56a7943405
commit 082215d4ac
4 changed files with 33 additions and 1 deletions

View File

@ -74,8 +74,11 @@ func main() {
println("Sphere mass:", dynSphere.GetMass()) println("Sphere mass:", dynSphere.GetMass())
println("Capsule mass:", dynCapsule.GetMass()) println("Capsule mass:", dynCapsule.GetMass())
s.SetScratchBuffer(4) println("Capsule linear damping A:", dynCapsule.GetLinearDamping())
dynCapsule.SetLinearDamping(0.05)
println("Capsule linear damping B:", dynCapsule.GetLinearDamping())
s.SetScratchBuffer(4)
for { for {
s.Simulate(1 / 60.0) s.Simulate(1 / 60.0)
s.FetchResults(true) s.FetchResults(true)

Binary file not shown.

View File

@ -20,7 +20,14 @@ extern "C" {
CPxAPI CSTRUCT CPxActor CPxRigidDynamic_toCPxActor(CSTRUCT CPxRigidDynamic*); CPxAPI CSTRUCT CPxActor CPxRigidDynamic_toCPxActor(CSTRUCT CPxRigidDynamic*);
CPxAPI void CPxRigidDynamic_addForce(CSTRUCT CPxRigidDynamic* crd, CSTRUCT CPxVec3* force, 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_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 CSTRUCT CPxVec3 CPxRigidDynamic_getLinearVelocity(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 void CPxRigidDynamic_setMass(CSTRUCT CPxRigidDynamic* crd, CPxReal mass);
CPxAPI CPxReal CPxRigidDynamic_getMass(CSTRUCT CPxRigidDynamic* crd); CPxAPI CPxReal CPxRigidDynamic_getMass(CSTRUCT CPxRigidDynamic* crd);

View File

@ -21,12 +21,34 @@ func (rd *RigidDynamic) AddTorque(torque *Vec3, fmode ForceMode, autoAwake bool)
C.CPxRigidDynamic_addTorque(rd.cRd, &torque.cV, uint32(fmode), C._Bool(autoAwake)) C.CPxRigidDynamic_addTorque(rd.cRd, &torque.cV, uint32(fmode), C._Bool(autoAwake))
} }
func (rd *RigidDynamic) SetLinearDamping(damping float32) {
C.CPxRigidDynamic_setLinearDamping(rd.cRd, C.float(damping))
}
func (rd *RigidDynamic) SetAngularDamping(damping float32) {
C.CPxRigidDynamic_setAngularDamping(rd.cRd, C.float(damping))
}
func (rd *RigidDynamic) GetLinearDamping() float32 {
return float32(C.CPxRigidDynamic_getLinearDamping(rd.cRd))
}
func (rd *RigidDynamic) GetAngularDamping() float32 {
return float32(C.CPxRigidDynamic_getAngularDamping(rd.cRd))
}
func (rd *RigidDynamic) GetLinearVelocity() Vec3 { func (rd *RigidDynamic) GetLinearVelocity() Vec3 {
return Vec3{ return Vec3{
cV: C.CPxRigidDynamic_getLinearVelocity(rd.cRd), cV: C.CPxRigidDynamic_getLinearVelocity(rd.cRd),
} }
} }
func (rd *RigidDynamic) GetAngularVelocity() Vec3 {
return Vec3{
cV: C.CPxRigidDynamic_getAngularVelocity(rd.cRd),
}
}
func (rd *RigidDynamic) SetMass(mass float32) { func (rd *RigidDynamic) SetMass(mass float32) {
C.CPxRigidDynamic_setMass(rd.cRd, C.float(mass)) C.CPxRigidDynamic_setMass(rd.cRd, C.float(mass))
} }