diff options
author | Benoit Bolsee <benoit.bolsee@online.be> | 2009-05-01 00:02:22 +0400 |
---|---|---|
committer | Benoit Bolsee <benoit.bolsee@online.be> | 2009-05-01 00:02:22 +0400 |
commit | 36d0e2649ee8bc95d68e5d8e5317aee4e82e44bf (patch) | |
tree | 0b38a3a2b562ccb6c829192d842ddad6e8a937fa /source/gameengine/Physics | |
parent | 2ec50d7bb282c3962d752771ceed8cb152f956a9 (diff) |
BGE bug fix: when a dynamic object is parented to a compound shape and then unparented, it jumps at the position it had before the parenting.
Diffstat (limited to 'source/gameengine/Physics')
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 3e1e0294321..a0bf0448e3e 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -533,6 +533,12 @@ void CcdPhysicsEnvironment::enableCcdPhysicsController(CcdPhysicsController* ctr { btCollisionObject* obj = ctrl->GetCollisionObject(); obj->setUserPointer(ctrl); + // update the position of the object from the user + if (ctrl->GetMotionState()) + { + btTransform xform = CcdPhysicsController::GetTransformFromMotionState(ctrl->GetMotionState()); + ctrl->SetCenterOfMassTransform(xform); + } m_dynamicsWorld->addCollisionObject(obj, ctrl->GetCollisionFilterGroup(), ctrl->GetCollisionFilterMask()); } |