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
217 static float getAverageTreeCollisionTime();
220 static float getAverageTriangleCollisionTime();
286#define GIMPACT_VS_PLANE_COLLISION 1
btAlignedObjectArray< btPersistentManifold * > btManifoldArray
btCollisionShape
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
btCompoundShape(bool enableDynamicAabbTree=true, const int initialChildCapacity=0)
@ BT_CONTACT_POINT_ALGORITHMS
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define SIMD_FORCE_INLINE
btStaticPlaneShape(const btVector3 &planeNormal, btScalar planeConstant)
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
btActivatingCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo &ci)
SIMD_FORCE_INLINE void push_back(const T &_Val)
btDispatcher * m_dispatcher
virtual void * allocateCollisionAlgorithm(int size)=0
void gimpact_vs_concave(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btConcaveShape *shape1, bool swapped)
void gimpact_vs_shape_find_pairs(const btTransform &trans0, const btTransform &trans1, const btGImpactShapeInterface *shape0, const btCollisionShape *shape1, btAlignedObjectArray< int > &collided_primitives)
void setFace0(int value)
Accessor/Mutator pairs for Part and triangleID.
SIMD_FORCE_INLINE btPersistentManifold * newContactManifold(const btCollisionObject *body0, const btCollisionObject *body1)
Creates a new contact point.
void collide_gjk_triangles(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactMeshShapePart *shape0, const btGImpactMeshShapePart *shape1, const int *pairs, int pair_count)
btCollisionAlgorithm * m_convex_algorithm
const btDispatcherInfo * m_dispatchInfo
void gimpact_vs_gimpact(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btGImpactShapeInterface *shape1)
Collides two gimpact shapes.
void gimpact_vs_compoundshape(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btCompoundShape *shape1, bool swapped)
btManifoldResult * internalGetResultOut()
btScalar calculateTimeOfImpact(btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
void gimpact_vs_gimpact_find_pairs(const btTransform &trans0, const btTransform &trans1, const btGImpactShapeInterface *shape0, const btGImpactShapeInterface *shape1, btPairSet &pairset)
btGImpactCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
void gimpacttrimeshpart_vs_plane_collision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactMeshShapePart *shape0, const btStaticPlaneShape *shape1, bool swapped)
void gimpact_vs_shape(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactShapeInterface *shape0, const btCollisionShape *shape1, bool swapped)
btPersistentManifold * m_manifoldPtr
virtual ~btGImpactCollisionAlgorithm()
SIMD_FORCE_INLINE void destroyContactManifolds()
SIMD_FORCE_INLINE void destroyConvexAlgorithm()
btManifoldResult * m_resultOut
void convex_vs_convex_collision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btCollisionShape *shape0, const btCollisionShape *shape1)
static void registerAlgorithm(btCollisionDispatcher *dispatcher)
Use this function for register the algorithm externally.
SIMD_FORCE_INLINE void clearCache()
void collide_sat_triangles(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btGImpactMeshShapePart *shape0, const btGImpactMeshShapePart *shape1, const int *pairs, int pair_count)
virtual void processCollision(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
virtual void getAllContactManifolds(btManifoldArray &manifoldArray)
void shape_vs_shape_collision(const btCollisionObjectWrapper *body0, const btCollisionObjectWrapper *body1, const btCollisionShape *shape0, const btCollisionShape *shape1)
void addContactPoint(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, const btVector3 &point, const btVector3 &normal, btScalar distance)
SIMD_FORCE_INLINE btPersistentManifold * getLastManifold()
SIMD_FORCE_INLINE void checkConvexAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
SIMD_FORCE_INLINE void checkManifold(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
SIMD_FORCE_INLINE btCollisionAlgorithm * newAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
This class manages a sub part of a mesh supplied by the btStridingMeshInterface interface.
Base class for gimpact shapes.
btManifoldResult is a helper class to manage contact results.
float distance(VecOp< float, D >, VecOp< float, D >) RET
btDispatcher * m_dispatcher1
btCollisionAlgorithmCreateFunc()
SIMD_FORCE_INLINE const btCollisionObject * getCollisionObject() const
virtual btCollisionAlgorithm * CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)