120 #endif // #if BT_THREADSAFE 138 for (
int i = 0; i < numSolvers; ++i )
142 if ( numSolvers > 0 )
153 for (
int i = 0; i < numSolvers; ++i )
158 init( &solvers[ 0 ], numSolvers );
164 init( solvers, numSolvers );
170 for (
int i = 0; i <
m_solvers.size(); ++i )
191 ts->
solver->
solveGroup( bodies, numBodies, manifolds, numManifolds, constraints, numConstraints, info, debugDrawer, dispatcher );
198 for (
int i = 0; i <
m_solvers.size(); ++i )
270 for (
int i = iBegin; i < iEnd; ++i )
virtual btScalar solveGroup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifolds, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher) BT_OVERRIDE
solve a group of constraints
virtual ~btConstraintSolverPoolMt()
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
void push_back(const T &_Val)
btConstraintSolverPoolMt - masquerades as a constraint solver, but really it is a threadsafe pool of ...
btDiscreteDynamicsWorldMt(btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolverPoolMt *constraintSolver, btCollisionConfiguration *collisionConfiguration)
btDiscreteDynamicsWorldMt
btSimulationIslandManager * m_islandManager
btConstraintSolver * solver
btAlignedObjectArray< btRigidBody * > m_nonStaticRigidBodies
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
virtual void createPredictiveContacts(btScalar timeStep) BT_OVERRIDE
void predictIntegratedTransform(btScalar step, btTransform &predictedTransform)
continuous collision detection needs prediction
virtual void buildAndProcessIslands(btDispatcher *dispatcher, btCollisionWorld *collisionWorld, btAlignedObjectArray< btTypedConstraint *> &constraints, IslandCallback *callback)
virtual void solveConstraints(btContactSolverInfo &solverInfo) BT_OVERRIDE
btDiscreteDynamicsWorld provides discrete rigid body simulation those classes replace the obsolete Cc...
void releasePredictiveContacts()
btCollisionConfiguration allows to configure Bullet collision detection stack allocator size...
virtual btScalar solveGroup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, class btIDebugDraw *debugDrawer, btDispatcher *dispatcher)=0
solve a group of constraints
#define SIMD_FORCE_INLINE
bool m_ownsConstraintSolver
btContactSolverInfo * m_solverInfo
void init(btConstraintSolver **solvers, int numSolvers)
InplaceSolverIslandCallbackMt(btConstraintSolver *solver, btStackAlloc *stackAlloc, btDispatcher *dispatcher)
virtual void reset() BT_OVERRIDE
clear internal cached data and reset random seed
virtual void predictUnconstraintMotion(btScalar timeStep) BT_OVERRIDE
bool isStaticOrKinematicObject() const
The StackAlloc class provides some fast stack-based memory allocator (LIFO last-in first-out) ...
btContactSolverInfo m_solverInfo
int getNumCollisionObjects() const
btCollisionWorld * getCollisionWorld()
btDispatcher * m_dispatcher
btIDebugDraw * m_debugDrawer
virtual btIDebugDraw * getDebugDrawer()
ThreadSolver * getAndLockThreadSolver()
btConstraintSolverPoolMt
virtual void integrateTransforms(btScalar timeStep) BT_OVERRIDE
btIDebugDraw * m_debugDrawer
#define btAlignedFree(ptr)
btCollisionObject can be used to manage collision detection objects.
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
const btTransform & getInterpolationWorldTransform() const
The btRigidBody is the main class for rigid body objects.
void setup(btContactSolverInfo *solverInfo, btIDebugDraw *debugDrawer)
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs...
btDispatcher * getDispatcher()
virtual btConstraintSolverType getSolverType() const =0
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (...
int size() const
return the number of elements in the array
btAlignedObjectArray< ThreadSolver > m_solvers
virtual void allSolved(const btContactSolverInfo &, class btIDebugDraw *)
void applyDamping(btScalar timeStep)
applyDamping damps the velocity, using the given m_linearDamping and m_angularDamping ...
virtual void prepareSolve(int, int)
btRigidBody ** rigidBodies
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btConstraintSolverPoolMt(int numSolvers)
void setMinimumSolverBatchSize(int sz)
btConstraintSolverType m_solverType
#define btAlignedAlloc(size, alignment)
btConstraintSolver * m_constraintSolver
virtual void processIsland(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifolds, int numManifolds, btTypedConstraint **constraints, int numConstraints, int islandId)
InplaceSolverIslandCallbackMt & operator=(InplaceSolverIslandCallbackMt &other)
btConstraintSolver * m_solver
void btParallelFor(int iBegin, int iEnd, int grainSize, const btIParallelForBody &body)
unsigned int btGetCurrentThreadIndex()
void forLoop(int iBegin, int iEnd) const BT_OVERRIDE
virtual void reset()=0
clear internal cached data and reset random seed
virtual ~btDiscreteDynamicsWorldMt()
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
InplaceSolverIslandCallbackMt * m_solverIslandCallbackMt
SimulationIslandManagerMt – Multithread capable version of SimulationIslandManager Splits the world...
virtual ~btSimulationIslandManager()
virtual ~btConstraintSolver()
btAlignedObjectArray< btTypedConstraint * > m_constraints