Propagate the allowed penetration through convex cast against a triangle mesh.
Thanks for the report and patch to Paul Dubois, Issue 451
This commit is contained in:
@@ -576,6 +576,7 @@ void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const bt
|
||||
|
||||
BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,collisionObject,triangleMesh, colObjWorldTransform);
|
||||
tccb.m_hitFraction = resultCallback.m_closestHitFraction;
|
||||
tccb.m_allowedPenetration = allowedPenetration;
|
||||
btVector3 boxMinLocal, boxMaxLocal;
|
||||
castShape->getAabb(rotationXform, boxMinLocal, boxMaxLocal);
|
||||
triangleMesh->performConvexcast(&tccb,convexFromLocal,convexToLocal,boxMinLocal, boxMaxLocal);
|
||||
@@ -632,6 +633,7 @@ void btCollisionWorld::objectQuerySingle(const btConvexShape* castShape,const bt
|
||||
|
||||
BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,collisionObject,concaveShape, colObjWorldTransform);
|
||||
tccb.m_hitFraction = resultCallback.m_closestHitFraction;
|
||||
tccb.m_allowedPenetration = allowedPenetration;
|
||||
btVector3 boxMinLocal, boxMaxLocal;
|
||||
castShape->getAabb(rotationXform, boxMinLocal, boxMaxLocal);
|
||||
|
||||
|
||||
@@ -124,8 +124,9 @@ btTriangleConvexcastCallback::btTriangleConvexcastCallback (const btConvexShape*
|
||||
m_convexShapeFrom = convexShapeFrom;
|
||||
m_convexShapeTo = convexShapeTo;
|
||||
m_triangleToWorld = triangleToWorld;
|
||||
m_hitFraction = 1.0;
|
||||
m_triangleCollisionMargin = triangleCollisionMargin;
|
||||
m_hitFraction = 1.0f;
|
||||
m_triangleCollisionMargin = triangleCollisionMargin;
|
||||
m_allowedPenetration = 0.f;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -148,6 +149,7 @@ btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId,
|
||||
|
||||
btConvexCast::CastResult castResult;
|
||||
castResult.m_fraction = btScalar(1.);
|
||||
castResult.m_allowedPenetration = m_allowedPenetration;
|
||||
if (convexCaster.calcTimeOfImpact(m_convexShapeFrom,m_convexShapeTo,m_triangleToWorld, m_triangleToWorld, castResult))
|
||||
{
|
||||
//add hit
|
||||
|
||||
@@ -58,7 +58,8 @@ public:
|
||||
btTransform m_convexShapeTo;
|
||||
btTransform m_triangleToWorld;
|
||||
btScalar m_hitFraction;
|
||||
btScalar m_triangleCollisionMargin;
|
||||
btScalar m_triangleCollisionMargin;
|
||||
btScalar m_allowedPenetration;
|
||||
|
||||
btTriangleConvexcastCallback (const btConvexShape* convexShape, const btTransform& convexShapeFrom, const btTransform& convexShapeTo, const btTransform& triangleToWorld, const btScalar triangleCollisionMargin);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user