Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef BT_DEFAULT_COLLISION_CONFIGURATION
00017 #define BT_DEFAULT_COLLISION_CONFIGURATION
00018
00019 #include "btCollisionConfiguration.h"
00020 class btVoronoiSimplexSolver;
00021 class btConvexPenetrationDepthSolver;
00022
00023 struct btDefaultCollisionConstructionInfo
00024 {
00025 btStackAlloc* m_stackAlloc;
00026 btPoolAllocator* m_persistentManifoldPool;
00027 btPoolAllocator* m_collisionAlgorithmPool;
00028 int m_defaultMaxPersistentManifoldPoolSize;
00029 int m_defaultMaxCollisionAlgorithmPoolSize;
00030 int m_customCollisionAlgorithmMaxElementSize;
00031 int m_defaultStackAllocatorSize;
00032 int m_useEpaPenetrationAlgorithm;
00033
00034 btDefaultCollisionConstructionInfo()
00035 :m_stackAlloc(0),
00036 m_persistentManifoldPool(0),
00037 m_collisionAlgorithmPool(0),
00038 m_defaultMaxPersistentManifoldPoolSize(4096),
00039 m_defaultMaxCollisionAlgorithmPoolSize(4096),
00040 m_customCollisionAlgorithmMaxElementSize(0),
00041 m_defaultStackAllocatorSize(0),
00042 m_useEpaPenetrationAlgorithm(true)
00043 {
00044 }
00045 };
00046
00047
00048
00052 class btDefaultCollisionConfiguration : public btCollisionConfiguration
00053 {
00054
00055 protected:
00056
00057 int m_persistentManifoldPoolSize;
00058
00059 btStackAlloc* m_stackAlloc;
00060 bool m_ownsStackAllocator;
00061
00062 btPoolAllocator* m_persistentManifoldPool;
00063 bool m_ownsPersistentManifoldPool;
00064
00065
00066 btPoolAllocator* m_collisionAlgorithmPool;
00067 bool m_ownsCollisionAlgorithmPool;
00068
00069
00070 btVoronoiSimplexSolver* m_simplexSolver;
00071 btConvexPenetrationDepthSolver* m_pdSolver;
00072
00073
00074 btCollisionAlgorithmCreateFunc* m_convexConvexCreateFunc;
00075 btCollisionAlgorithmCreateFunc* m_convexConcaveCreateFunc;
00076 btCollisionAlgorithmCreateFunc* m_swappedConvexConcaveCreateFunc;
00077 btCollisionAlgorithmCreateFunc* m_compoundCreateFunc;
00078 btCollisionAlgorithmCreateFunc* m_swappedCompoundCreateFunc;
00079 btCollisionAlgorithmCreateFunc* m_emptyCreateFunc;
00080 btCollisionAlgorithmCreateFunc* m_sphereSphereCF;
00081 btCollisionAlgorithmCreateFunc* m_sphereBoxCF;
00082 btCollisionAlgorithmCreateFunc* m_boxSphereCF;
00083
00084 btCollisionAlgorithmCreateFunc* m_boxBoxCF;
00085 btCollisionAlgorithmCreateFunc* m_sphereTriangleCF;
00086 btCollisionAlgorithmCreateFunc* m_triangleSphereCF;
00087 btCollisionAlgorithmCreateFunc* m_planeConvexCF;
00088 btCollisionAlgorithmCreateFunc* m_convexPlaneCF;
00089
00090 public:
00091
00092
00093 btDefaultCollisionConfiguration(const btDefaultCollisionConstructionInfo& constructionInfo = btDefaultCollisionConstructionInfo());
00094
00095 virtual ~btDefaultCollisionConfiguration();
00096
00098 virtual btPoolAllocator* getPersistentManifoldPool()
00099 {
00100 return m_persistentManifoldPool;
00101 }
00102
00103 virtual btPoolAllocator* getCollisionAlgorithmPool()
00104 {
00105 return m_collisionAlgorithmPool;
00106 }
00107
00108 virtual btStackAlloc* getStackAllocator()
00109 {
00110 return m_stackAlloc;
00111 }
00112
00113 virtual btVoronoiSimplexSolver* getSimplexSolver()
00114 {
00115 return m_simplexSolver;
00116 }
00117
00118
00119 virtual btCollisionAlgorithmCreateFunc* getCollisionAlgorithmCreateFunc(int proxyType0,int proxyType1);
00120
00128 void setConvexConvexMultipointIterations(int numPerturbationIterations=3, int minimumPointsPerturbationThreshold = 3);
00129
00130 void setPlaneConvexMultipointIterations(int numPerturbationIterations=3, int minimumPointsPerturbationThreshold = 3);
00131
00132 };
00133
00134 #endif //BT_DEFAULT_COLLISION_CONFIGURATION
00135