44 #include <BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h>
45 #include <LinearMath/btPoolAllocator.h>
56 bool share_pool_allocators)
57 : share_pool_allocators_(share_pool_allocators)
59 if (create_pool_allocators)
66 throw std::runtime_error(
"Pool allocators have not been setup!");
84 std::make_shared<btPoolAllocator>(
sizeof(btPersistentManifold), m_defaultMaxPersistentManifoldPoolSize);
89 int maxSize2 =
sizeof(btConvexConcaveCollisionAlgorithm);
93 int collisionAlgorithmMaxElementSize = btMax(maxSize, m_customCollisionAlgorithmMaxElementSize);
94 collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize, maxSize2);
95 collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize, maxSize3);
96 collisionAlgorithmMaxElementSize = btMax(collisionAlgorithmMaxElementSize, maxSize4);
99 collisionAlgorithmMaxElementSize = (collisionAlgorithmMaxElementSize + 16) & 0xffffffffffff0;
103 std::make_shared<btPoolAllocator>(collisionAlgorithmMaxElementSize, m_defaultMaxCollisionAlgorithmPoolSize);
108 : btDefaultCollisionConfiguration(config_info)
110 assert(config_info.m_collisionAlgorithmPool !=
nullptr);
111 assert(config_info.m_persistentManifoldPool !=
nullptr);
112 assert(m_ownsCollisionAlgorithmPool ==
false);
113 assert(m_ownsPersistentManifoldPool ==
false);
117 m_compoundCreateFunc->~btCollisionAlgorithmCreateFunc();
118 btAlignedFree(m_compoundCreateFunc);
120 m_compoundCompoundCreateFunc->~btCollisionAlgorithmCreateFunc();
121 btAlignedFree(m_compoundCompoundCreateFunc);
123 m_swappedCompoundCreateFunc->~btCollisionAlgorithmCreateFunc();
124 btAlignedFree(m_swappedCompoundCreateFunc);
126 m_convexConvexCreateFunc->~btCollisionAlgorithmCreateFunc();
127 btAlignedFree(m_convexConvexCreateFunc);
129 if (m_ownsCollisionAlgorithmPool)
131 m_collisionAlgorithmPool->~btPoolAllocator();
132 btAlignedFree(m_collisionAlgorithmPool);
134 if (m_ownsPersistentManifoldPool)
136 m_persistentManifoldPool->~btPoolAllocator();
137 btAlignedFree(m_persistentManifoldPool);