In my scene I have a btCollisionObject with btCompoundShape, and a btRigidBody with a btBoxShape, they are both running in the only btDiscreteDynamicsWorld. And when they collide, I got numManifolds(which is not 0), but I cannot get contact points since numContacts is always 0.
my code for collision detection:
Code: Select all
int numManifolds = sDynamicsWorld->getDispatcher()->getNumManifolds();
for(int i=0;i<numManifolds;i++)
{
btPersistentManifold * contactManifold = sDynamicsWorld->getDispatcher()->getManifoldByIndexInternal(i);
int numContacts= contactManifold->getNumContacts();
if(numContacts>0)
{
btCollisionObject * obA = static_cast<btCollisionObject*>(contactManifold->getBody0());
btCollisionObject * obB = static_cast<btCollisionObject*>(contactManifold->getBody1());
type_obj1 = obA->getUserPointer();
type_obj2 = obB->getUserPointer();
...
}
}
Non-zero contactManifold means collision, am I right?
thanks.