From c56ee09c48b4d29dabe1c7daa2133777c27944f6 Mon Sep 17 00:00:00 2001 From: Benoit Bolsee Date: Mon, 27 Apr 2009 16:40:26 +0000 Subject: [PATCH] BGE bug #18624: Collision detection fails on parented objects. Partial fix, parented shape now moves with the parent but still the parent near detector detects the child only in the zone where it was parented. --- source/gameengine/Ketsji/KX_BulletPhysicsController.cpp | 3 +++ source/gameengine/Ketsji/KX_BulletPhysicsController.h | 1 + 2 files changed, 4 insertions(+) diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp index bc5a64d36a8..891317e64a1 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp @@ -361,6 +361,7 @@ void KX_BulletPhysicsController::SuspendDynamics(bool ghost) btBroadphaseProxy* handle = body->getBroadphaseHandle(); m_savedCollisionFlags = body->getCollisionFlags(); m_savedMass = GetMass(); + m_savedDyna = m_bDyna; m_savedCollisionFilterGroup = handle->m_collisionFilterGroup; m_savedCollisionFilterMask = handle->m_collisionFilterMask; m_savedActivationState = body->getActivationState(); @@ -370,6 +371,7 @@ void KX_BulletPhysicsController::SuspendDynamics(bool ghost) btCollisionObject::CF_STATIC_OBJECT|((ghost)?btCollisionObject::CF_NO_CONTACT_RESPONSE:(m_savedCollisionFlags&btCollisionObject::CF_NO_CONTACT_RESPONSE)), btBroadphaseProxy::StaticFilter, btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter); + m_bDyna = false; } } @@ -384,6 +386,7 @@ void KX_BulletPhysicsController::RestoreDynamics() m_savedCollisionFilterGroup, m_savedCollisionFilterMask); body->forceActivationState(m_savedActivationState); + m_bDyna = m_savedDyna; } } diff --git a/source/gameengine/Ketsji/KX_BulletPhysicsController.h b/source/gameengine/Ketsji/KX_BulletPhysicsController.h index b39098206f7..2174f0db499 100644 --- a/source/gameengine/Ketsji/KX_BulletPhysicsController.h +++ b/source/gameengine/Ketsji/KX_BulletPhysicsController.h @@ -13,6 +13,7 @@ private: short int m_savedCollisionFilterGroup; short int m_savedCollisionFilterMask; MT_Scalar m_savedMass; + bool m_savedDyna; btCollisionShape* m_bulletChildShape; public: