Add btBroadphaseInterface::aabbTest. btDbvtBroadphase and btAxisSweep3 should perform well, as long as the raycast accelerator is enabled.

This should fix the btCollisionWorld::contactTest(btCollisionObject* colObj, ContactResultCallback& resultCallback);

Thanks to Ola for the report!
This commit is contained in:
erwin.coumans
2010-02-11 18:25:50 +00:00
parent 7a175fb65e
commit bb8d1b11df
8 changed files with 115 additions and 7 deletions

View File

@@ -965,7 +965,7 @@ struct btBridgedManifoldResult : public btManifoldResult
struct btSingleContactCallback : public btBroadphaseRayCallback
struct btSingleContactCallback : public btBroadphaseAabbCallback
{
btCollisionObject* m_collisionObject;
@@ -1012,8 +1012,8 @@ void btCollisionWorld::contactTest( btCollisionObject* colObj, ContactResultCall
btVector3 aabbMin,aabbMax;
colObj->getCollisionShape()->getAabb(colObj->getWorldTransform(),aabbMin,aabbMax);
btSingleContactCallback contactCB(colObj,this,resultCallback);
m_broadphasePairCache->rayTest(colObj->getWorldTransform().getOrigin(),colObj->getWorldTransform().getOrigin(),contactCB,aabbMin,aabbMax);
m_broadphasePairCache->aabbTest(aabbMin,aabbMax,contactCB);
}