34 m_btConvexTriangleCallback(ci.m_dispatcher1,body0Wrap,body1Wrap,isSwapped),
35 m_isSwapped(isSwapped)
82 partId,
int triangleIndex)
84 BT_PROFILE(
"btConvexTriangleCallback::processTriangle");
159 colAlgo->~btCollisionAlgorithm();
184 btVector3 extra(extraMargin, extraMargin, extraMargin);
193 m_btConvexTriangleCallback.clearCache();
199 BT_PROFILE(
"btConvexConcaveCollisionAlgorithm::processCollision");
234 if (queryVertices.
size())
240 for (
int v = 0; v < queryVertices.
size(); v++)
248 if (sdfShape->
queryPoint(vtxInSdf, dist, normalLocal))
259 vtxWorldSpace -= sphere->
getRadius()*normal;
279 m_btConvexTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,convexBodyWrap,triBodyWrap,resultOut);
283 concaveShape->
processAllTriangles( &m_btConvexTriangleCallback,m_btConvexTriangleCallback.getAabbMin(),m_btConvexTriangleCallback.getAabbMax());
287 m_btConvexTriangleCallback.clearWrapperData();
310 if (squareMot0 < convexbody->getCcdSquareMotionThreshold())
334 :m_ccdSphereFromTrans(from),
335 m_ccdSphereToTrans(to),
336 m_ccdSphereRadius(ccdSphereRadius),
337 m_hitFraction(hitFraction)
361 ident,ident,castResult))
382 rayAabbMin -=
btVector3(ccdRadius0,ccdRadius0,ccdRadius0);
383 rayAabbMax +=
btVector3(ccdRadius0,ccdRadius0,ccdRadius0);
386 LocalTriangleSphereCastCallback raycastCallback(convexFromLocal,convexToLocal,
405 return raycastCallback.m_hitFraction;
virtual ~btConvexConcaveCollisionAlgorithm()
virtual void releaseManifold(btPersistentManifold *manifold)=0
virtual void processCollision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
void push_back(const T &_Val)
const btDispatcherInfo * m_dispatchInfoPtr
btDispatcher * m_dispatcher
btScalar getCcdSweptSphereRadius() const
Swept sphere radius (0.0 by default), see btConvexConvexAlgorithm::
btConvexTriangleCallback m_btConvexTriangleCallback
virtual void drawLine(const btVector3 &from, const btVector3 &to, const btVector3 &color)=0
virtual ~btConvexTriangleCallback()
virtual btCollisionAlgorithm * findAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, btPersistentManifold *sharedManifold, ebtDispatcherQueryType queryType)=0
void setPersistentManifold(btPersistentManifold *manifoldPtr)
btScalar m_collisionMarginTriangle
This class is not enabled yet (work-in-progress) to more aggressively activate objects.
virtual void getVertex(int i, btVector3 &vtx) const =0
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
void setHitFraction(btScalar hitFraction)
void refreshContactPoints()
The btSphereShape implements an implicit sphere, centered around a local origin with radius...
btManifoldResult is a helper class to manage contact results.
class btIDebugDraw * m_debugDraw
const btCollisionObjectWrapper * getBody1Wrap() const
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const =0
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t...
btVector3 & safeNormalize()
btDispatcher * m_dispatcher
The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape...
const btTransform & getInterpolationWorldTransform() const
virtual void setShapeIdentifiersA(int partId0, int index0)
setShapeIdentifiersA/B provides experimental support for per-triangle material / custom material comb...
virtual void addContactPoint(const btVector3 &normalOnBInWorld, const btVector3 &pointInWorld, btScalar depth)
btTransform & getWorldTransform()
virtual void setMargin(btScalar margin)
RayResult stores the closest result alternatively, add a callback method to decide about closest/all ...
const btCollisionObjectWrapper * m_convexBodyWrap
btScalar m_closestPointDistanceThreshold
int size() const
return the number of elements in the array
btVoronoiSimplexSolver is an implementation of the closest point distance algorithm from a 1-4 points...
The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTrian...
const btCollisionObjectWrapper * getBody0Wrap() const
btScalar calculateTimeOfImpact(btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
virtual bool calcTimeOfImpact(const btTransform &fromA, const btTransform &toA, const btTransform &fromB, const btTransform &toB, CastResult &result)
SimsimplexConvexCast calculateTimeOfImpact calculates the time of impact+normal for the linear cast (...
const btTransform & getWorldTransform() const
btCollisionObject can be used to manage collision detection objects.
The btPolyhedralConvexShape is an internal interface class for polyhedral convex shapes.
void setTimeStepAndCounters(btScalar collisionMarginTriangle, const btDispatcherInfo &dispatchInfo, const btCollisionObjectWrapper *convexBodyWrap, const btCollisionObjectWrapper *triBodyWrap, btManifoldResult *resultOut)
const btCollisionObject * getBody0Internal() const
virtual void freeCollisionAlgorithm(void *ptr)=0
virtual btPersistentManifold * getNewManifold(const btCollisionObject *b0, const btCollisionObject *b1)=0
virtual int getNumVertices() const =0
virtual void setShapeIdentifiersB(int partId1, int index1)
const btCollisionShape * getCollisionShape() const
btScalar getHitFraction() const
btVector3 can be used to represent 3D points and vectors.
btSubsimplexConvexCast implements Gino van den Bergens' paper "Ray Casting against bteral Convex Obje...
bool queryPoint(const btVector3 &ptInSDF, btScalar &distOut, btVector3 &normal)
bool isPolyhedral() const
The btConcaveShape class provides an interface for non-moving (static) concave shapes.
virtual int getDebugMode() const =0
void setBody1Wrap(const btCollisionObjectWrapper *obj1Wrap)
virtual void processTriangle(btVector3 *triangle, int partId, int triangleIndex)
virtual void getAllContactManifolds(btManifoldArray &manifoldArray)
const btCollisionObjectWrapper * m_triBodyWrap
btConvexConcaveCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, bool isSwapped)
btConvexTriangleCallback(btDispatcher *dispatcher, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, bool isSwapped)
btScalar getRadius() const
virtual btScalar getMargin() const
void setBody0Wrap(const btCollisionObjectWrapper *obj0Wrap)
void setMax(const btVector3 &other)
Set each element to the max of the current values and the values of another btVector3.
btDispatcher * m_dispatcher1
btPersistentManifold * m_manifoldPtr
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatche...
const btCollisionShape * getCollisionShape() const
bool TestTriangleAgainstAabb2(const btVector3 *vertices, const btVector3 &aabbMin, const btVector3 &aabbMax)
conservative test for overlap between triangle and aabb
void setMin(const btVector3 &other)
Set each element to the min of the current values and the values of another btVector3.
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btManifoldResult * m_resultOut
const btCollisionObject * getCollisionObject() const
virtual void clearManifold(btPersistentManifold *manifold)=0