In my application I just need collision detection, no dynamics. Any suggestions on where to get more information?
Thanks
Tom
Ps. here is some sample code of what I am doing:
Code: Select all
// What my custom dispatcher looks like:
class armsEnvDispatcher : public btCollisionDispatcher
{
public:
armsEnvDispatcher(btCollisionConfiguration* collisionConfiguration)
: btCollisionDispatcher(collisionConfiguration)
{
}
// need special collision function
virtual bool needsCollision(btCollisionObject* co0, btCollisionObject* co1)
{
if( btCollisionDispatcher::needsCollision(co0, co1) )
{
// recheck the broadphase again
return _poverlapfilt != NULL ? _poverlapfilt->needBroadphaseCollision(co0->getBroadphaseHandle(), co1->getBroadphaseHandle()) : true;
}
return false;
}
btOverlapFilterCallback* _poverlapfilt;
};
// What's inside my own collision detection abstraction constructor:
btDbvtBroadphase* broadphase = new btDbvtBroadphase();
btDefaultCollisionConfiguration* collisionConfiguration = new btDefaultCollisionConfiguration();
armsEnvDispatcher* dispatcher = new armsEnvDispatcher(collisionConfiguration);
collisionWorld = new btCollisionWorld(dispatcher,broadphase,collisionConfiguration);
btGImpactCollisionAlgorithm::registerAlgorithm((btCollisionDispatcher*)collisionWorld->getDispatcher());
filterCallback = new ArmsEnvironmentFilterCallback();
dispatcher->_poverlapfilt = filterCallback;
filterCallback->objectOfInterest = NULL;
collisionWorld->getPairCache()->setOverlapFilterCallback(filterCallback);
// What my collision check method looks like in my class:
syncBullet(); // updates bullet collision object positions (they are already added to the collision world before this)
collisionWorld->performDiscreteCollisionDetection();
collisionWorld->getBroadphase()->calculateOverlappingPairs(collisionWorld->getDispatcher());
bool collisionDetected = false;
int numManifolds = collisionWorld->getDispatcher()->getNumManifolds();
for (int i=0; i < numManifolds; i++)
{
// work done here