From 635e1a6aa0add7307f544e375d596c299f6b1b3a Mon Sep 17 00:00:00 2001 From: "erwin.coumans" Date: Fri, 5 Dec 2008 22:40:13 +0000 Subject: [PATCH] set broadphase handle to zero when destructing a btCollisionWorld, just in case a collision object/ rigid body is re-used. Thanks to Ole for reporting Fix a bug , causing some deep penetrations to be missed. Not likely to have impacted many users, as such deep penetrations should have prevented in the first place. Thanks a lot to Andy O'Neil for reporting and reproduction case. --- src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp | 1 + src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp index eb72a2bea..30a400286 100644 --- a/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +++ b/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp @@ -69,6 +69,7 @@ btCollisionWorld::~btCollisionWorld() // getBroadphase()->getOverlappingPairCache()->cleanProxyFromPairs(bp,m_dispatcher1); getBroadphase()->destroyProxy(bp,m_dispatcher1); + collisionObject->setBroadphaseHandle(0); } } diff --git a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp index 2b2db5e76..0856332d1 100644 --- a/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp +++ b/src/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp @@ -150,7 +150,8 @@ void btGjkPairDetector::getClosestPoints(const ClosestPointInput& input,Result& // potential exit, they don't overlap if ((delta > btScalar(0.0)) && (delta * delta > squaredDistance * input.m_maximumDistanceSquared)) { - checkPenetration = false; + checkSimplex=true; + //checkPenetration = false; break; }