Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h')
-rw-r--r--extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h94
1 files changed, 46 insertions, 48 deletions
diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
index 92696ee5429..04309670cfc 100644
--- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
+++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionDispatcher.h
@@ -37,33 +37,28 @@ class btCollisionDispatcher;
///user can override this nearcallback for collision filtering and more finegrained control over collision detection
typedef void (*btNearCallback)(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);
-
///btCollisionDispatcher supports algorithms that handle ConvexConvex and ConvexConcave collision pairs.
///Time of Impact, Closest Points and Penetration Depth.
class btCollisionDispatcher : public btDispatcher
{
-
protected:
+ int m_dispatcherFlags;
- int m_dispatcherFlags;
+ btAlignedObjectArray<btPersistentManifold*> m_manifoldsPtr;
- btAlignedObjectArray<btPersistentManifold*> m_manifoldsPtr;
+ btNearCallback m_nearCallback;
- btManifoldResult m_defaultManifoldResult;
+ btPoolAllocator* m_collisionAlgorithmPoolAllocator;
- btNearCallback m_nearCallback;
-
- btPoolAllocator* m_collisionAlgorithmPoolAllocator;
+ btPoolAllocator* m_persistentManifoldPoolAllocator;
- btPoolAllocator* m_persistentManifoldPoolAllocator;
+ btCollisionAlgorithmCreateFunc* m_doubleDispatchContactPoints[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];
- btCollisionAlgorithmCreateFunc* m_doubleDispatch[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];
-
- btCollisionConfiguration* m_collisionConfiguration;
+ btCollisionAlgorithmCreateFunc* m_doubleDispatchClosestPoints[MAX_BROADPHASE_COLLISION_TYPES][MAX_BROADPHASE_COLLISION_TYPES];
+ btCollisionConfiguration* m_collisionConfiguration;
public:
-
enum DispatcherFlags
{
CD_STATIC_STATIC_REPORTED = 1,
@@ -71,101 +66,104 @@ public:
CD_DISABLE_CONTACTPOOL_DYNAMIC_ALLOCATION = 4
};
- int getDispatcherFlags() const
+ int getDispatcherFlags() const
{
return m_dispatcherFlags;
}
- void setDispatcherFlags(int flags)
+ void setDispatcherFlags(int flags)
{
m_dispatcherFlags = flags;
}
///registerCollisionCreateFunc allows registration of custom/alternative collision create functions
- void registerCollisionCreateFunc(int proxyType0,int proxyType1, btCollisionAlgorithmCreateFunc* createFunc);
+ void registerCollisionCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc* createFunc);
- int getNumManifolds() const
- {
- return int( m_manifoldsPtr.size());
+ void registerClosestPointsCreateFunc(int proxyType0, int proxyType1, btCollisionAlgorithmCreateFunc* createFunc);
+
+ int getNumManifolds() const
+ {
+ return int(m_manifoldsPtr.size());
}
- btPersistentManifold** getInternalManifoldPointer()
+ btPersistentManifold** getInternalManifoldPointer()
{
- return m_manifoldsPtr.size()? &m_manifoldsPtr[0] : 0;
+ return m_manifoldsPtr.size() ? &m_manifoldsPtr[0] : 0;
}
- btPersistentManifold* getManifoldByIndexInternal(int index)
+ btPersistentManifold* getManifoldByIndexInternal(int index)
{
+ btAssert(index>=0);
+ btAssert(index<m_manifoldsPtr.size());
return m_manifoldsPtr[index];
}
- const btPersistentManifold* getManifoldByIndexInternal(int index) const
+ const btPersistentManifold* getManifoldByIndexInternal(int index) const
{
+ btAssert(index>=0);
+ btAssert(index<m_manifoldsPtr.size());
return m_manifoldsPtr[index];
}
- btCollisionDispatcher (btCollisionConfiguration* collisionConfiguration);
+ btCollisionDispatcher(btCollisionConfiguration* collisionConfiguration);
virtual ~btCollisionDispatcher();
- virtual btPersistentManifold* getNewManifold(const btCollisionObject* b0,const btCollisionObject* b1);
-
- virtual void releaseManifold(btPersistentManifold* manifold);
+ virtual btPersistentManifold* getNewManifold(const btCollisionObject* b0, const btCollisionObject* b1);
+ virtual void releaseManifold(btPersistentManifold* manifold);
virtual void clearManifold(btPersistentManifold* manifold);
- btCollisionAlgorithm* findAlgorithm(const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,btPersistentManifold* sharedManifold = 0);
-
- virtual bool needsCollision(const btCollisionObject* body0,const btCollisionObject* body1);
-
- virtual bool needsResponse(const btCollisionObject* body0,const btCollisionObject* body1);
-
- virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache,const btDispatcherInfo& dispatchInfo,btDispatcher* dispatcher) ;
+ btCollisionAlgorithm* findAlgorithm(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, btPersistentManifold* sharedManifold, ebtDispatcherQueryType queryType);
+
+ virtual bool needsCollision(const btCollisionObject* body0, const btCollisionObject* body1);
+
+ virtual bool needsResponse(const btCollisionObject* body0, const btCollisionObject* body1);
- void setNearCallback(btNearCallback nearCallback)
+ virtual void dispatchAllCollisionPairs(btOverlappingPairCache* pairCache, const btDispatcherInfo& dispatchInfo, btDispatcher* dispatcher);
+
+ void setNearCallback(btNearCallback nearCallback)
{
- m_nearCallback = nearCallback;
+ m_nearCallback = nearCallback;
}
- btNearCallback getNearCallback() const
+ btNearCallback getNearCallback() const
{
return m_nearCallback;
}
//by default, Bullet will use this near callback
- static void defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);
+ static void defaultNearCallback(btBroadphasePair& collisionPair, btCollisionDispatcher& dispatcher, const btDispatcherInfo& dispatchInfo);
- virtual void* allocateCollisionAlgorithm(int size);
+ virtual void* allocateCollisionAlgorithm(int size);
- virtual void freeCollisionAlgorithm(void* ptr);
+ virtual void freeCollisionAlgorithm(void* ptr);
- btCollisionConfiguration* getCollisionConfiguration()
+ btCollisionConfiguration* getCollisionConfiguration()
{
return m_collisionConfiguration;
}
- const btCollisionConfiguration* getCollisionConfiguration() const
+ const btCollisionConfiguration* getCollisionConfiguration() const
{
return m_collisionConfiguration;
}
- void setCollisionConfiguration(btCollisionConfiguration* config)
+ void setCollisionConfiguration(btCollisionConfiguration* config)
{
m_collisionConfiguration = config;
}
- virtual btPoolAllocator* getInternalManifoldPool()
+ virtual btPoolAllocator* getInternalManifoldPool()
{
return m_persistentManifoldPoolAllocator;
}
- virtual const btPoolAllocator* getInternalManifoldPool() const
+ virtual const btPoolAllocator* getInternalManifoldPool() const
{
return m_persistentManifoldPoolAllocator;
}
-
};
-#endif //BT_COLLISION__DISPATCHER_H
-
+#endif //BT_COLLISION__DISPATCHER_H