diff options
author | Benoit Bolsee <benoit.bolsee@online.be> | 2008-07-20 19:40:03 +0400 |
---|---|---|
committer | Benoit Bolsee <benoit.bolsee@online.be> | 2008-07-20 19:40:03 +0400 |
commit | d725e5f78eae57b3cfd0d32b8404beaef4e11846 (patch) | |
tree | a2ae780c9952d07def7d687834438cd74dc881fa /source/gameengine/Ketsji/KX_BulletPhysicsController.cpp | |
parent | 89f2a63ecde5ebebddb493522e88951852ec9cf4 (diff) |
BGE bug fix (for 2.47): setParent() fix, third part: set mass to 0 when parenting. Allow loc/scale/orientation change on child object with physic controller.
Diffstat (limited to 'source/gameengine/Ketsji/KX_BulletPhysicsController.cpp')
-rw-r--r-- | source/gameengine/Ketsji/KX_BulletPhysicsController.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp index e25deaf05a9..1553c4c61c2 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp @@ -170,10 +170,12 @@ void KX_BulletPhysicsController::SuspendDynamics(bool ghost) { btBroadphaseProxy* handle = body->getBroadphaseHandle(); m_savedCollisionFlags = body->getCollisionFlags(); + m_savedMass = GetMass(); m_savedCollisionFilterGroup = handle->m_collisionFilterGroup; m_savedCollisionFilterMask = handle->m_collisionFilterMask; body->setActivationState(DISABLE_SIMULATION); GetPhysicsEnvironment()->updateCcdPhysicsController(this, + 0.0, btCollisionObject::CF_STATIC_OBJECT|((ghost)?btCollisionObject::CF_NO_CONTACT_RESPONSE:(m_savedCollisionFlags&btCollisionObject::CF_NO_CONTACT_RESPONSE)), btBroadphaseProxy::StaticFilter, btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter); @@ -185,11 +187,12 @@ void KX_BulletPhysicsController::RestoreDynamics() btRigidBody *body = GetRigidBody(); if (body->getActivationState() == DISABLE_SIMULATION) { - GetRigidBody()->forceActivationState(ACTIVE_TAG); GetPhysicsEnvironment()->updateCcdPhysicsController(this, + m_savedMass, m_savedCollisionFlags, m_savedCollisionFilterGroup, m_savedCollisionFilterMask); + GetRigidBody()->forceActivationState(ACTIVE_TAG); } } |