Why do only some collision algorithms use shared manifold?

ole.k
Posts: 17
Joined: Thu Jun 12, 2008 1:32 pm

Why do only some collision algorithms use shared manifold?

Post by ole.k »

The btCollisionAlgorithmCreateFunc has the factory method

Code: Select all

virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& info, btCollisionObject* body0, btCollisionObject* body1)
In the member m_manifold of the info-parameter, one can pass a btPersistentManifold, so the created collision algorithm can use this manifold as a "shared" manifold to store the contact points. However, some algorithms use this, some do not. For example for btConvexConvexAlgorithm we have:

Code: Select all

virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
{
	void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btConvexConvexAlgorithm));
	return new(mem) btConvexConvexAlgorithm(ci.m_manifold,ci,... further parameters...);
}
(so ci.m_manifold is used), while btSphereSphereCollisionAlgorithm doesn't use it:

Code: Select all

virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
{
	void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereSphereCollisionAlgorithm));
	return new(mem) btSphereSphereCollisionAlgorithm(0,ci,body0,body1);
}
Is there a reason why some algorithms use the manifold and other don't?