Add support for childshape index for btCompoundShape during ContactAddedCallback,
see example in Bullet/Demos/ConvexDecompositionDemo Removed some warnings
This commit is contained in:
@@ -231,6 +231,8 @@ class btPrimitiveManagerBase
|
||||
{
|
||||
public:
|
||||
|
||||
virtual ~btPrimitiveManagerBase() {}
|
||||
|
||||
//! determines if this manager consist on only triangles, which special case will be optimized
|
||||
virtual bool is_trimesh() const = 0;
|
||||
virtual int get_primitive_count() const = 0;
|
||||
|
||||
@@ -102,6 +102,7 @@ public:
|
||||
{
|
||||
return m_parent->m_gim_shape->getChildShape(index);
|
||||
}
|
||||
virtual ~ChildShapeRetriever() {}
|
||||
};
|
||||
|
||||
class TriangleShapeRetriever:public ChildShapeRetriever
|
||||
@@ -113,6 +114,7 @@ public:
|
||||
m_parent->m_gim_shape->getBulletTriangle(index,m_parent->m_trishape);
|
||||
return &m_parent->m_trishape;
|
||||
}
|
||||
virtual ~TriangleShapeRetriever() {}
|
||||
};
|
||||
|
||||
class TetraShapeRetriever:public ChildShapeRetriever
|
||||
@@ -213,7 +215,8 @@ void btGImpactCollisionAlgorithm::addContactPoint(btCollisionObject * body0,
|
||||
const btVector3 & normal,
|
||||
btScalar distance)
|
||||
{
|
||||
m_resultOut->setShapeIdentifiers(m_part0,m_triface0,m_part1,m_triface1);
|
||||
m_resultOut->setShapeIdentifiersA(m_part0,m_triface0);
|
||||
m_resultOut->setShapeIdentifiersB(m_part1,m_triface1);
|
||||
checkManifold(body0,body1);
|
||||
m_resultOut->addContactPoint(normal,point,distance);
|
||||
}
|
||||
@@ -236,7 +239,8 @@ void btGImpactCollisionAlgorithm::shape_vs_shape_collision(
|
||||
btCollisionAlgorithm* algor = newAlgorithm(body0,body1);
|
||||
// post : checkManifold is called
|
||||
|
||||
m_resultOut->setShapeIdentifiers(m_part0,m_triface0,m_part1,m_triface1);
|
||||
m_resultOut->setShapeIdentifiersA(m_part0,m_triface0);
|
||||
m_resultOut->setShapeIdentifiersB(m_part1,m_triface1);
|
||||
|
||||
algor->processCollision(body0,body1,*m_dispatchInfo,m_resultOut);
|
||||
|
||||
@@ -262,7 +266,8 @@ void btGImpactCollisionAlgorithm::convex_vs_convex_collision(
|
||||
body1->internalSetTemporaryCollisionShape(shape1);
|
||||
|
||||
|
||||
m_resultOut->setShapeIdentifiers(m_part0,m_triface0,m_part1,m_triface1);
|
||||
m_resultOut->setShapeIdentifiersA(m_part0,m_triface0);
|
||||
m_resultOut->setShapeIdentifiersB(m_part1,m_triface1);
|
||||
|
||||
checkConvexAlgorithm(body0,body1);
|
||||
m_convex_algorithm->processCollision(body0,body1,*m_dispatchInfo,m_resultOut);
|
||||
|
||||
@@ -302,6 +302,7 @@ public:
|
||||
class CompoundPrimitiveManager:public btPrimitiveManagerBase
|
||||
{
|
||||
public:
|
||||
virtual ~CompoundPrimitiveManager() {}
|
||||
btGImpactCompoundShape * m_compoundShape;
|
||||
|
||||
|
||||
@@ -582,6 +583,7 @@ public:
|
||||
|
||||
}
|
||||
|
||||
virtual ~TrimeshPrimitiveManager() {}
|
||||
|
||||
void lock()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user