diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2012-07-09 08:57:21 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2012-07-09 08:57:21 +0400 |
commit | 9d73cbf2c4104282eef7b022a3381da64d3077f1 (patch) | |
tree | 95acbadc114ef4c6b2291c7caef25ca11339c554 /source/gameengine/Ketsji | |
parent | 4ff0efd5a2a1790f7f4407d732bf01ec3d2f00b3 (diff) |
As a response to issue [#28483] "Enable/Disable Rigid Body actuator do nothing" reported by Jean-Francois Gallant (pyroevil), I'm adding preliminary support to enable and disable rigid body physics on dynamic objects. This is can be done via the Edit Object Actuator or through KX_GameObject.enableRigidBody() and KX_GameObject.disableRigidBody(). Thanks to Sergej Reich for his help with the patch.
Diffstat (limited to 'source/gameengine/Ketsji')
-rw-r--r-- | source/gameengine/Ketsji/KX_BulletPhysicsController.cpp | 1 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp | 18 |
2 files changed, 9 insertions, 10 deletions
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp index abc2460a5ba..b974886f60a 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp @@ -232,6 +232,7 @@ MT_Vector3 KX_BulletPhysicsController::getReactionForce() } void KX_BulletPhysicsController::setRigidBody(bool rigid) { + CcdPhysicsController::setRigidBody(rigid); } /* This function dynamically adds the collision shape of another controller to diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp index 227ca39281f..f1038c04499 100644 --- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp +++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp @@ -118,6 +118,12 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, ci.m_MotionState = motionstate; ci.m_gravity = btVector3(0,0,0); + ci.m_linearFactor = btVector3(objprop->m_lockXaxis? 0 : 1, + objprop->m_lockYaxis? 0 : 1, + objprop->m_lockZaxis? 0 : 1); + ci.m_angularFactor = btVector3(objprop->m_lockXRotaxis? 0 : 1, + objprop->m_lockYRotaxis? 0 : 1, + objprop->m_lockZRotaxis? 0 : 1); ci.m_localInertiaTensor =btVector3(0,0,0); ci.m_mass = objprop->m_dyna ? shapeprops->m_mass : 0.f; ci.m_clamp_vel_min = shapeprops->m_clamp_vel_min; @@ -441,16 +447,8 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, { if (objprop->m_angular_rigidbody) { - btVector3 linearFactor( - objprop->m_lockXaxis? 0 : 1, - objprop->m_lockYaxis? 0 : 1, - objprop->m_lockZaxis? 0 : 1); - btVector3 angularFactor( - objprop->m_lockXRotaxis? 0 : 1, - objprop->m_lockYRotaxis? 0 : 1, - objprop->m_lockZRotaxis? 0 : 1); - rbody->setLinearFactor(linearFactor); - rbody->setAngularFactor(angularFactor); + rbody->setLinearFactor(ci.m_linearFactor); + rbody->setAngularFactor(ci.m_angularFactor); } if (rbody && objprop->m_disableSleeping) |