diff options
author | Mitchell Stokes <mogurijin@gmail.com> | 2012-07-30 07:45:15 +0400 |
---|---|---|
committer | Mitchell Stokes <mogurijin@gmail.com> | 2012-07-30 07:45:15 +0400 |
commit | 977188e3736db9442bc0c31aa1844d92c5119da0 (patch) | |
tree | ceb09b272a10a392293744d6ce115ec62bc027fe /extern/bullet2/patches | |
parent | ae483e0cd2e9cafac08b26c917687b74c6d4a661 (diff) |
Fixing [#32210] "Character physics type colliding with sensor type" reported by Daniel Stokes (kupoman) by applying a patch found in this Bullet bug report: https://code.google.com/p/bullet/issues/detail?id=525
Diffstat (limited to 'extern/bullet2/patches')
-rw-r--r-- | extern/bullet2/patches/ghost_character.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/extern/bullet2/patches/ghost_character.patch b/extern/bullet2/patches/ghost_character.patch new file mode 100644 index 00000000000..d4098cb8bc2 --- /dev/null +++ b/extern/bullet2/patches/ghost_character.patch @@ -0,0 +1,28 @@ +Index: extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp +=================================================================== +--- extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp (revision 49183) ++++ extern/bullet2/src/BulletDynamics/Character/btKinematicCharacterController.cpp (working copy) +@@ -77,6 +77,9 @@ + if (convexResult.m_hitCollisionObject == m_me) + return btScalar(1.0); + ++ if (!convexResult.m_hitCollisionObject->hasContactResponse()) ++ return btScalar(1.0); ++ + btVector3 hitNormalWorld; + if (normalInWorldSpace) + { +@@ -173,7 +176,12 @@ + m_manifoldArray.resize(0); + + btBroadphasePair* collisionPair = &m_ghostObject->getOverlappingPairCache()->getOverlappingPairArray()[i]; +- ++ btCollisionObject* obj0 = static_cast<btCollisionObject*>(collisionPair->m_pProxy0->m_clientObject); ++ btCollisionObject* obj1 = static_cast<btCollisionObject*>(collisionPair->m_pProxy1->m_clientObject); ++ ++ if ((obj0 && !obj0->hasContactResponse()) || (obj1 && !obj1->hasContactResponse())) ++ continue; ++ + if (collisionPair->m_algorithm) + collisionPair->m_algorithm->getAllContactManifolds(m_manifoldArray); + |