From 843b45cafa618cd6230a16ca13f24860b3301b39 Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Wed, 8 Aug 2012 01:24:48 +0000 Subject: --- source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'source/gameengine/Physics/Bullet') diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index 5d28bf47401..49652ef9544 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -2214,11 +2214,19 @@ void CcdPhysicsEnvironment::CallbackTriggers() bool CcdOverlapFilterCallBack::needBroadphaseCollision(btBroadphaseProxy* proxy0,btBroadphaseProxy* proxy1) const { btCollisionObject *colObj0, *colObj1; + KX_GameObject *gameObj0 = KX_GameObject::GetClientObject((KX_ClientObjectInfo*)((CcdPhysicsController*)((btCollisionObject*)proxy0->m_clientObject)->getUserPointer())->getNewClientInfo()); + KX_GameObject *gameObj1 = KX_GameObject::GetClientObject((KX_ClientObjectInfo*)((CcdPhysicsController*)((btCollisionObject*)proxy1->m_clientObject)->getUserPointer())->getNewClientInfo()); CcdPhysicsController *sensorCtrl, *objCtrl; + bool collides; // first check the filters collides = (proxy0->m_collisionFilterGroup & proxy1->m_collisionFilterMask) != 0; collides = collides && (proxy1->m_collisionFilterGroup & proxy0->m_collisionFilterMask); + if (gameObj0 && gameObj1) + { + collides = collides && gameObj0->CheckCollision(gameObj1); + collides = collides && gameObj1->CheckCollision(gameObj0); + } if (!collides) return false; -- cgit v1.2.3