Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
24 #ifndef BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H
25 #define BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H
123 return convex_algorithm;
146 const int* pairs,
int pair_count);
152 const int* pairs,
int pair_count);
215 #ifdef TRI_COLLISION_PROFILING
216 static float getAverageTreeCollisionTime();
220 static float getAverageTriangleCollisionTime();
221 #endif //TRI_COLLISION_PROFILING
286 #define GIMPACT_VS_PLANE_COLLISION 1
288 #endif //BT_GIMPACT_BVH_CONCAVE_COLLISION_ALGORITHM_H
void gimpact_vs_shape_find_pairs(const btTransform &trans0, const btTransform &trans1, const btGImpactShapeInterface *shape0, const btCollisionShape *shape1, btAlignedObjectArray< int > &collided_primitives)
void collide_gjk_triangles(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactMeshShapePart *shape0, const btGImpactMeshShapePart *shape1, const int *pairs, int pair_count)
Collision routines.
btCollisionObject can be used to manage collision detection objects.
btGImpactCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
void checkConvexAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
virtual ~btCollisionAlgorithm()
virtual void getAllContactManifolds(btManifoldArray &manifoldArray)
btDispatcher * m_dispatcher
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
void destroyContactManifolds()
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
The btConcaveShape class provides an interface for non-moving (static) concave shapes.
btManifoldResult * internalGetResultOut()
void destroyConvexAlgorithm()
btManifoldResult * m_resultOut
This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface.
virtual void * allocateCollisionAlgorithm(int size)=0
void gimpact_vs_gimpact_find_pairs(const btTransform &trans0, const btTransform &trans1, const btGImpactShapeInterface *shape0, const btGImpactShapeInterface *shape1, btPairSet &pairset)
btCollisionDispatcher supports algorithms that handle ConvexConvex and ConvexConcave collision pairs.
virtual void freeCollisionAlgorithm(void *ptr)=0
btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatche...
virtual btPersistentManifold * getNewManifold(const btCollisionObject *b0, const btCollisionObject *b1)=0
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
Used by the btCollisionDispatcher to register and create instances for btCollisionAlgorithm.
btScalar calculateTimeOfImpact(btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
void gimpact_vs_shape(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btCollisionShape *shape1, bool swapped)
btManifoldResult is a helper class to manage contact results.
void collide_sat_triangles(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactMeshShapePart *shape0, const btGImpactMeshShapePart *shape1, const int *pairs, int pair_count)
virtual void releaseManifold(btPersistentManifold *manifold)=0
void gimpact_vs_compoundshape(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btCompoundShape *shape1, bool swapped)
void addContactPoint(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btVector3 &point, const btVector3 &normal, btScalar distance)
virtual ~btGImpactCollisionAlgorithm()
void setFace0(int value)
Accessor/Mutator pairs for Part and triangleID.
btCollisionAlgorithm * m_convex_algorithm
static void registerAlgorithm(btCollisionDispatcher *dispatcher)
Use this function for register the algorithm externally.
const btDispatcherInfo * m_dispatchInfo
const btCollisionObject * getCollisionObject() const
void checkManifold(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
btCollisionAlgorithm * newAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
btVector3 can be used to represent 3D points and vectors.
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
virtual btCollisionAlgorithm * findAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, btPersistentManifold *sharedManifold, ebtDispatcherQueryType queryType)=0
void setPersistentManifold(btPersistentManifold *manifoldPtr)
btDispatcher * m_dispatcher1
void gimpact_vs_concave(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btConcaveShape *shape1, bool swapped)
virtual void processCollision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
virtual btCollisionAlgorithm * CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
#define SIMD_FORCE_INLINE
The btCompoundShape allows to store multiple other btCollisionShapes This allows for moving concave c...
void gimpacttrimeshpart_vs_plane_collision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactMeshShapePart *shape0, const btStaticPlaneShape *shape1, bool swapped)
Base class for gimpact shapes.
btPersistentManifold * newContactManifold(const btCollisionObject *body0, const btCollisionObject *body1)
Creates a new contact point.
The btStaticPlaneShape simulates an infinite non-moving (static) collision plane.
void gimpact_vs_gimpact(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btGImpactShapeInterface *shape1)
Collides two gimpact shapes.
This class is not enabled yet (work-in-progress) to more aggressively activate objects.
void convex_vs_convex_collision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btCollisionShape *shape0, const btCollisionShape *shape1)
btPersistentManifold * getLastManifold()
Collision Algorithm for GImpact Shapes.
void push_back(const T &_Val)
btPersistentManifold * m_manifoldPtr
void shape_vs_shape_collision(const btCollisionObjectWrapper *body0, const btCollisionObjectWrapper *body1, const btCollisionShape *shape0, const btCollisionShape *shape1)