33 m_collisionConfiguration(collisionConfiguration)
77 btScalar contactProcessingThreshold =
btMin(body0->getContactProcessingThreshold(), body1->getContactProcessingThreshold());
103 manifold->clearManifold();
111 int findIndex = manifold->m_index1a;
117 manifold->~btPersistentManifold();
151 (body0->hasContactResponse() && body1->hasContactResponse());
153 hasResponse = hasResponse &&
154 ((!body0->isStaticOrKinematicObject()) || (!body1->isStaticOrKinematicObject()));
169 if (body0->isStaticOrKinematicObject() && body1->isStaticOrKinematicObject())
172 printf(
"warning btCollisionDispatcher::needsCollision: static-static collision!\n");
177 if ((!body0->isActive()) && (!body1->isActive()))
179 else if ((!body0->checkCollideWith(body1)) || (!body1->checkCollideWith(body0)))
194 : m_dispatchInfo(dispatchInfo),
242 if (!collisionPair.m_algorithm)
247 if (collisionPair.m_algorithm)
255 collisionPair.m_algorithm->processCollision(&obj0Wrap, &obj1Wrap, dispatchInfo, &contactPointResult);
260 btScalar toi = collisionPair.m_algorithm->calculateTimeOfImpact(colObj0, colObj1, dispatchInfo, &contactPointResult);
#define btAlignedFree(ptr)
#define btAlignedAlloc(size, alignment)
@ MAX_BROADPHASE_COLLISION_TYPES
btScalar gContactBreakingThreshold
btDispatcher * m_dispatcher
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
@ BT_CONTACT_POINT_ALGORITHMS
SIMD_FORCE_INLINE const T & btMin(const T &a, const T &b)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE int size() const
return the number of elements in the array
void swap(int index0, int index1)
SIMD_FORCE_INLINE void pop_back()
SIMD_FORCE_INLINE void push_back(const T &_Val)
virtual btPoolAllocator * getPersistentManifoldPool()=0
memory pools
virtual btCollisionAlgorithmCreateFunc * getClosestPointsAlgorithmCreateFunc(int proxyType0, int proxyType1)=0
virtual btCollisionAlgorithmCreateFunc * getCollisionAlgorithmCreateFunc(int proxyType0, int proxyType1)=0
virtual btPoolAllocator * getCollisionAlgorithmPool()=0
btCollisionAlgorithmCreateFunc * m_doubleDispatchClosestPoints[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES]
virtual void releaseManifold(btPersistentManifold *manifold)
void registerClosestPointsCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc *createFunc)
btCollisionConfiguration * m_collisionConfiguration
virtual bool needsCollision(const btCollisionObject *body0, const btCollisionObject *body1)
btCollisionDispatcher(btCollisionConfiguration *collisionConfiguration)
void setNearCallback(btNearCallback nearCallback)
virtual btPersistentManifold * getNewManifold(const btCollisionObject *b0, const btCollisionObject *b1)
virtual void freeCollisionAlgorithm(void *ptr)
virtual ~btCollisionDispatcher()
btCollisionAlgorithmCreateFunc * m_doubleDispatchContactPoints[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES]
static void defaultNearCallback(btBroadphasePair &collisionPair, btCollisionDispatcher &dispatcher, const btDispatcherInfo &dispatchInfo)
virtual void dispatchAllCollisionPairs(btOverlappingPairCache *pairCache, const btDispatcherInfo &dispatchInfo, btDispatcher *dispatcher)
btPoolAllocator * m_collisionAlgorithmPoolAllocator
virtual void clearManifold(btPersistentManifold *manifold)
virtual bool needsResponse(const btCollisionObject *body0, const btCollisionObject *body1)
btCollisionAlgorithm * findAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, btPersistentManifold *sharedManifold, ebtDispatcherQueryType queryType)
@ CD_STATIC_STATIC_REPORTED
@ CD_USE_RELATIVE_CONTACT_BREAKING_THRESHOLD
@ CD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION
virtual void * allocateCollisionAlgorithm(int size)
btAlignedObjectArray< btPersistentManifold * > m_manifoldsPtr
btPoolAllocator * m_persistentManifoldPoolAllocator
void registerCollisionCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc *createFunc)
registerCollisionCreateFunc allows registration of custom/alternative collision create functions
virtual bool processOverlap(btBroadphasePair &pair)
virtual ~btCollisionPairCallback()
btCollisionPairCallback(const btDispatcherInfo &dispatchInfo, btCollisionDispatcher *dispatcher)
btManifoldResult is a helper class to manage contact results.
virtual void processAllOverlappingPairs(btOverlapCallback *, btDispatcher *dispatcher)=0
void freeMemory(void *ptr)
void * allocate(int size)
btPersistentManifold * m_manifold
btDispatcher * m_dispatcher1
Used by the btCollisionDispatcher to register and create instances for btCollisionAlgorithm.
virtual btCollisionAlgorithm * CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo &, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap)
SIMD_FORCE_INLINE const btCollisionShape * getCollisionShape() const