63 #endif // #if BT_THREADSAFE 81 for (
int i = 0; i < numSolvers; ++i )
96 for (
int i = 0; i < numSolvers; ++i )
101 init( &solvers[ 0 ], numSolvers );
107 init( solvers, numSolvers );
113 for (
int i = 0; i <
m_solvers.size(); ++i )
134 ts->
solver->
solveGroup( bodies, numBodies, manifolds, numManifolds, constraints, numConstraints, info, debugDrawer, dispatcher );
141 for (
int i = 0; i <
m_solvers.size(); ++i )
210 for (
int i = iBegin; i < iEnd; ++i )
275 scheduler->sleepWorkerThreadsHint();
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)
btConstraintSolver * m_solverMt
btConstraintSolverPoolMt - masquerades as a constraint solver, but really it is a threadsafe pool of ...
btConstraintSolver * m_solverPool
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 solveConstraints(btContactSolverInfo &solverInfo) BT_OVERRIDE
btITaskScheduler * btGetTaskScheduler()
btContactSolverInfo * m_solverInfo
btDiscreteDynamicsWorld provides discrete rigid body simulation those classes replace the obsolete Cc...
void releasePredictiveContacts()
btDiscreteDynamicsWorldMt(btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolverPoolMt *constraintSolver, btConstraintSolver *constraintSolverMt, btCollisionConfiguration *collisionConfiguration)
btDiscreteDynamicsWorldMt
btCollisionConfiguration allows to configure Bullet collision detection stack allocator size...
btDispatcher * m_dispatcher
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
int getNumCollisionObjects() const
void init(btConstraintSolver **solvers, int numSolvers)
virtual void reset() BT_OVERRIDE
clear internal cached data and reset random seed
virtual void predictUnconstraintMotion(btScalar timeStep) BT_OVERRIDE
btContactSolverInfo m_solverInfo
const btTransform & getInterpolationWorldTransform() const
btCollisionWorld * getCollisionWorld()
btConstraintSolver * m_constraintSolverMt
int size() const
return the number of elements in the array
btIDebugDraw * m_debugDrawer
ThreadSolver * getAndLockThreadSolver()
btConstraintSolverPoolMt
virtual void integrateTransforms(btScalar timeStep) BT_OVERRIDE
virtual void buildAndProcessIslands(btDispatcher *dispatcher, btCollisionWorld *collisionWorld, btAlignedObjectArray< btTypedConstraint * > &constraints, const SolverParams &solverParams)
bool isStaticOrKinematicObject() const
#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...
The btRigidBody is the main class for rigid body objects.
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs...
btDispatcher * getDispatcher()
virtual btConstraintSolverType getSolverType() const =0
virtual int stepSimulation(btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))
if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (...
btIDebugDraw * m_debugDrawer
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
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 ...
virtual int stepSimulation(btScalar timeStep, int maxSubSteps, btScalar fixedTimeStep) BT_OVERRIDE
if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SimulationIslandManagerMt – Multithread capable version of SimulationIslandManager Splits the world ...
virtual ~btSimulationIslandManager()
btAlignedObjectArray< btTypedConstraint * > m_constraints