Blender  V3.3
Classes | Functions | Variables
btSequentialImpulseConstraintSolverMt.h File Reference
#include "btSequentialImpulseConstraintSolver.h"
#include "btBatchedConstraints.h"
#include "LinearMath/btThreads.h"

Go to the source code of this file.

Classes

struct  btContactManifoldCachedInfo
 
struct  JointParams
 

Functions

virtual btScalar solveSingleIteration (int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer) BT_OVERRIDE
 
virtual btScalar solveGroupCacheFriendlySetup (btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer) BT_OVERRIDE
 
virtual btScalar solveGroupCacheFriendlyFinish (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal) BT_OVERRIDE
 
void internalInitMultipleJoints (btTypedConstraint **constraints, int iBegin, int iEnd)
 
void internalConvertMultipleJoints (const btAlignedObjectArray< JointParams > &jointParamsArray, btTypedConstraint **constraints, int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
virtual void randomizeConstraintOrdering (int iteration, int numIterations)
 
virtual btScalar resolveAllJointConstraints (int iteration)
 
virtual btScalar resolveAllContactConstraints ()
 
virtual btScalar resolveAllContactFrictionConstraints ()
 
virtual btScalar resolveAllContactConstraintsInterleaved ()
 
virtual btScalar resolveAllRollingFrictionConstraints ()
 
virtual void setupBatchedContactConstraints ()
 
virtual void setupBatchedJointConstraints ()
 
virtual void convertJoints (btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal) BT_OVERRIDE
 
virtual void convertContacts (btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal) BT_OVERRIDE
 
virtual void convertBodies (btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal) BT_OVERRIDE
 
int getOrInitSolverBodyThreadsafe (btCollisionObject &body, btScalar timeStep)
 
void allocAllContactConstraints (btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal)
 
void setupAllContactConstraints (const btContactSolverInfo &infoGlobal)
 
void randomizeBatchedConstraintOrdering (btBatchedConstraints *batchedConstraints)
 
 BT_DECLARE_ALIGNED_ALLOCATOR ()
 
 btSequentialImpulseConstraintSolverMt ()
 
virtual ~btSequentialImpulseConstraintSolverMt ()
 
btScalar resolveMultipleJointConstraints (const btAlignedObjectArray< int > &consIndices, int batchBegin, int batchEnd, int iteration)
 
btScalar resolveMultipleContactConstraints (const btAlignedObjectArray< int > &consIndices, int batchBegin, int batchEnd)
 
btScalar resolveMultipleContactSplitPenetrationImpulseConstraints (const btAlignedObjectArray< int > &consIndices, int batchBegin, int batchEnd)
 
btScalar resolveMultipleContactFrictionConstraints (const btAlignedObjectArray< int > &consIndices, int batchBegin, int batchEnd)
 
btScalar resolveMultipleContactRollingFrictionConstraints (const btAlignedObjectArray< int > &consIndices, int batchBegin, int batchEnd)
 
btScalar resolveMultipleContactConstraintsInterleaved (const btAlignedObjectArray< int > &contactIndices, int batchBegin, int batchEnd)
 
void internalCollectContactManifoldCachedInfo (btContactManifoldCachedInfo *cachedInfoArray, btPersistentManifold **manifoldPtr, int numManifolds, const btContactSolverInfo &infoGlobal)
 
void internalAllocContactConstraints (const btContactManifoldCachedInfo *cachedInfoArray, int numManifolds)
 
void internalSetupContactConstraints (int iContactConstraint, const btContactSolverInfo &infoGlobal)
 
void internalConvertBodies (btCollisionObject **bodies, int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
void internalWriteBackContacts (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
void internalWriteBackJoints (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 
void internalWriteBackBodies (int iBegin, int iEnd, const btContactSolverInfo &infoGlobal)
 

Variables

btSequentialImpulseConstraintSolverMt __pad0__
 
btSequentialImpulseConstraintSolverMt int numBodies
 
btSequentialImpulseConstraintSolverMt int btPersistentManifold ** manifoldPtr
 
btSequentialImpulseConstraintSolverMt int btPersistentManifold int numManifolds
 
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint ** constraints
 
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint int numConstraints
 
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint int const btContactSolverInfoinfoGlobal
 
btSequentialImpulseConstraintSolverMt int btPersistentManifold int btTypedConstraint int const btContactSolverInfo btIDebugDraw *debugDrawer BT_OVERRIDE
 
static bool s_allowNestedParallelForLoops = false
 
static int s_minimumContactManifoldsForBatching = 250
 
static btBatchedConstraints::BatchingMethod s_contactBatchingMethod = btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D
 
static btBatchedConstraints::BatchingMethod s_jointBatchingMethod = btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D
 
static int s_minBatchSize = 50
 
static int s_maxBatchSize = 100
 
static const int CACHE_LINE_SIZE = 64
 
btBatchedConstraints m_batchedContactConstraints
 
btBatchedConstraints m_batchedJointConstraints
 
int m_numFrictionDirections
 
bool m_useBatching
 
bool m_useObsoleteJointConstraints
 
btAlignedObjectArray< btContactManifoldCachedInfom_manifoldCachedInfoArray
 
btAlignedObjectArray< int > m_rollingFrictionIndexTable
 
btSpinMutex m_bodySolverArrayMutex
 
char m_antiFalseSharingPadding [CACHE_LINE_SIZE]
 
btSpinMutex m_kinematicBodyUniqueIdToSolverBodyTableMutex
 
btAlignedObjectArray< char > m_scratchMemory
 

Function Documentation

◆ allocAllContactConstraints()

void btSequentialImpulseConstraintSolverMt::allocAllContactConstraints ( btPersistentManifold **  manifoldPtr,
int  numManifolds,
const btContactSolverInfo infoGlobal 
)
protected

◆ BT_DECLARE_ALIGNED_ALLOCATOR()

BT_DECLARE_ALIGNED_ALLOCATOR ( )

◆ btSequentialImpulseConstraintSolverMt()

btSequentialImpulseConstraintSolverMt::btSequentialImpulseConstraintSolverMt ( )

◆ convertBodies()

virtual void convertBodies ( btCollisionObject **  bodies,
int  numBodies,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

◆ convertContacts()

virtual void convertContacts ( btPersistentManifold **  manifoldPtr,
int  numManifolds,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

◆ convertJoints()

virtual void convertJoints ( btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal 
)
protectedvirtual

◆ getOrInitSolverBodyThreadsafe()

int btSequentialImpulseConstraintSolverMt::getOrInitSolverBodyThreadsafe ( btCollisionObject body,
btScalar  timeStep 
)
protected

◆ internalAllocContactConstraints()

void btSequentialImpulseConstraintSolverMt::internalAllocContactConstraints ( const btContactManifoldCachedInfo cachedInfoArray,
int  numManifolds 
)

◆ internalCollectContactManifoldCachedInfo()

void btSequentialImpulseConstraintSolverMt::internalCollectContactManifoldCachedInfo ( btContactManifoldCachedInfo cachedInfoArray,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
const btContactSolverInfo infoGlobal 
)

◆ internalConvertBodies()

void btSequentialImpulseConstraintSolverMt::internalConvertBodies ( btCollisionObject **  bodies,
int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)

◆ internalConvertMultipleJoints()

void btSequentialImpulseConstraintSolverMt::internalConvertMultipleJoints ( const btAlignedObjectArray< JointParams > &  jointParamsArray,
btTypedConstraint **  constraints,
int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)

◆ internalInitMultipleJoints()

void btSequentialImpulseConstraintSolverMt::internalInitMultipleJoints ( btTypedConstraint **  constraints,
int  iBegin,
int  iEnd 
)

◆ internalSetupContactConstraints()

void btSequentialImpulseConstraintSolverMt::internalSetupContactConstraints ( int  iContactConstraint,
const btContactSolverInfo infoGlobal 
)

Bullet has several options to set the friction directions By default, each contact has only a single friction direction that is recomputed automatically very frame based on the relative linear velocity. If the relative velocity it zero, it will automatically compute a friction direction.

You can also enable two friction directions, using the SOLVER_USE_2_FRICTION_DIRECTIONS. In that case, the second friction direction will be orthogonal to both contact normal and first friction direction.

If you choose SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION, then the friction will be independent from the relative projected velocity.

The user can manually override the friction directions for certain contacts using a contact callback, and set the cp.m_lateralFrictionInitialized to true In that case, you can set the target relative motion in each friction direction (cp.m_contactMotion1 and cp.m_contactMotion2) this will give a conveyor belt effect

Definition at line 65 of file btSequentialImpulseConstraintSolverMt.cpp.

References applyAnisotropicFriction(), BT_CONTACT_FLAG_LATERAL_FRICTION_INITIALIZED, btAssert, btPlaneSpace1(), btSolverBody, btSolverConstraint, btSqrt(), btSwap(), btVector3, CF_ANISOTROPIC_FRICTION, CF_ANISOTROPIC_ROLLING_FRICTION, btManifoldPoint::getPositionWorldOnA(), btManifoldPoint::getPositionWorldOnB(), infoGlobal, length2(), btManifoldPoint::m_combinedRollingFriction, btManifoldPoint::m_combinedSpinningFriction, btManifoldPoint::m_contactMotion1, btManifoldPoint::m_contactMotion2, btManifoldPoint::m_contactPointFlags, btManifoldPoint::m_frictionCFM, btManifoldPoint::m_lateralFrictionDir1, btManifoldPoint::m_lateralFrictionDir2, btManifoldPoint::m_normalWorldOnB, m_rollingFrictionIndexTable, btContactSolverInfoData::m_solverMode, m_tmpSolverContactConstraintPool, m_tmpSolverContactFrictionConstraintPool, m_tmpSolverContactRollingFrictionConstraintPool, NULL, setFrictionConstraintImpulse(), setupContactConstraint(), setupFrictionConstraint(), setupTorsionalFrictionConstraint(), SIMD_EPSILON, SOLVER_DISABLE_VELOCITY_DEPENDENT_FRICTION_DIRECTION, SOLVER_ENABLE_FRICTION_DIRECTION_CACHING, and SOLVER_USE_2_FRICTION_DIRECTIONS.

Referenced by setupAllContactConstraints().

◆ internalWriteBackBodies()

void btSequentialImpulseConstraintSolverMt::internalWriteBackBodies ( int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)

◆ internalWriteBackContacts()

void btSequentialImpulseConstraintSolverMt::internalWriteBackContacts ( int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)

◆ internalWriteBackJoints()

void btSequentialImpulseConstraintSolverMt::internalWriteBackJoints ( int  iBegin,
int  iEnd,
const btContactSolverInfo infoGlobal 
)

◆ randomizeBatchedConstraintOrdering()

void btSequentialImpulseConstraintSolverMt::randomizeBatchedConstraintOrdering ( btBatchedConstraints batchedConstraints)
protected

◆ randomizeConstraintOrdering()

void btSequentialImpulseConstraintSolverMt::randomizeConstraintOrdering ( int  iteration,
int  numIterations 
)
protectedvirtual

◆ resolveAllContactConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveAllContactConstraints ( )
protectedvirtual

◆ resolveAllContactConstraintsInterleaved()

btScalar btSequentialImpulseConstraintSolverMt::resolveAllContactConstraintsInterleaved ( )
protectedvirtual

◆ resolveAllContactFrictionConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveAllContactFrictionConstraints ( )
protectedvirtual

◆ resolveAllJointConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveAllJointConstraints ( int  iteration)
protectedvirtual

◆ resolveAllRollingFrictionConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveAllRollingFrictionConstraints ( )
protectedvirtual

◆ resolveMultipleContactConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactConstraints ( const btAlignedObjectArray< int > &  consIndices,
int  batchBegin,
int  batchEnd 
)

◆ resolveMultipleContactConstraintsInterleaved()

btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactConstraintsInterleaved ( const btAlignedObjectArray< int > &  contactIndices,
int  batchBegin,
int  batchEnd 
)

◆ resolveMultipleContactFrictionConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactFrictionConstraints ( const btAlignedObjectArray< int > &  consIndices,
int  batchBegin,
int  batchEnd 
)

◆ resolveMultipleContactRollingFrictionConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactRollingFrictionConstraints ( const btAlignedObjectArray< int > &  consIndices,
int  batchBegin,
int  batchEnd 
)

◆ resolveMultipleContactSplitPenetrationImpulseConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleContactSplitPenetrationImpulseConstraints ( const btAlignedObjectArray< int > &  consIndices,
int  batchBegin,
int  batchEnd 
)

◆ resolveMultipleJointConstraints()

btScalar btSequentialImpulseConstraintSolverMt::resolveMultipleJointConstraints ( const btAlignedObjectArray< int > &  consIndices,
int  batchBegin,
int  batchEnd,
int  iteration 
)

◆ setupAllContactConstraints()

void btSequentialImpulseConstraintSolverMt::setupAllContactConstraints ( const btContactSolverInfo infoGlobal)
protected

◆ setupBatchedContactConstraints()

void btSequentialImpulseConstraintSolverMt::setupBatchedContactConstraints ( )
protectedvirtual

◆ setupBatchedJointConstraints()

void btSequentialImpulseConstraintSolverMt::setupBatchedJointConstraints ( )
protectedvirtual

◆ solveGroupCacheFriendlyFinish()

virtual btScalar solveGroupCacheFriendlyFinish ( btCollisionObject **  bodies,
int  numBodies,
const btContactSolverInfo infoGlobal 
)
virtual

◆ solveGroupCacheFriendlySetup()

virtual btScalar solveGroupCacheFriendlySetup ( btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer 
)
virtual

◆ solveSingleIteration()

virtual btScalar solveSingleIteration ( int  iteration,
btCollisionObject **  bodies,
int  numBodies,
btPersistentManifold **  manifoldPtr,
int  numManifolds,
btTypedConstraint **  constraints,
int  numConstraints,
const btContactSolverInfo infoGlobal,
btIDebugDraw debugDrawer 
)
virtual

◆ ~btSequentialImpulseConstraintSolverMt()

btSequentialImpulseConstraintSolverMt::~btSequentialImpulseConstraintSolverMt ( )
virtual

Definition at line 39 of file btSequentialImpulseConstraintSolverMt.cpp.

Variable Documentation

◆ __pad0__

btSequentialImpulseConstraintSolverMt

A multithreaded variant of the sequential impulse constraint solver. The constraints to be solved are grouped into batches and phases where each batch of constraints within a given phase can be solved in parallel with the rest. Ideally we want as few phases as possible, and each phase should have many batches, and all of the batches should have about the same number of constraints. This method works best on a large island of many constraints.

Supports all of the features of the normal sequential impulse solver such as:

  • split penetration impulse
  • rolling friction
  • interleaving constraints
  • warmstarting
  • 2 friction directions
  • randomized constraint ordering
  • early termination when leastSquaresResidualThreshold is satisfied

When the SOLVER_INTERLEAVE_CONTACT_AND_FRICTION_CONSTRAINTS flag is enabled, unlike the normal SequentialImpulse solver, the rolling friction is interleaved as well. Interleaving the contact penetration constraints with friction reduces the number of parallel loops that need to be done, which reduces threading overhead so it can be a performance win, however, it does seem to produce a less stable simulation, at least on stacks of blocks.

When the SOLVER_RANDMIZE_ORDER flag is enabled, the ordering of phases, and the ordering of constraints within each batch is randomized, however it does not swap constraints between batches. This is to avoid regenerating the batches for each solver iteration which would be quite costly in performance.

Note that a non-zero leastSquaresResidualThreshold could possibly affect the determinism of the simulation if the task scheduler's parallelSum operation is non-deterministic. The parallelSum operation can be non-deterministic because floating point addition is not associative due to rounding errors. The task scheduler can and should ensure that the result of any parallelSum operation is deterministic.

Definition at line 57 of file btSequentialImpulseConstraintSolverMt.h.

◆ BT_OVERRIDE

Definition at line 60 of file btSequentialImpulseConstraintSolverMt.h.

◆ CACHE_LINE_SIZE

const int CACHE_LINE_SIZE = 64
staticprotected

Definition at line 96 of file btSequentialImpulseConstraintSolverMt.h.

◆ constraints

Definition at line 60 of file btSequentialImpulseConstraintSolverMt.h.

Referenced by btSimulationIslandManagerMt::addConstraintsToIslands(), BKE_constraint_apply_and_remove_for_object(), BKE_constraint_apply_and_remove_for_pose(), blender::deg::DepsgraphRelationBuilder::build_constraints(), btSimulationIslandManagerMt::buildAndProcessIslands(), calcBatchCost(), constraint_apply_exec(), constraint_copy_exec(), constraint_find_original(), constraint_list_find_from_target(), convertJoints(), debugDrawAllBatches(), debugDrawPhase(), debugDrawSingleBatch(), initBatchedConstraintInfo(), initBatchedConstraintInfoArray(), InitJointsLoop::InitJointsLoop(), internalConvertMultipleJoints(), internalInitMultipleJoints(), InplaceSolverIslandCallback::processConstraints(), MultiBodyInplaceSolverIslandCallback::processConstraints(), DeformableBodyInplaceSolverIslandCallback::processConstraints(), ReadSolverConstraintsLoop::ReadSolverConstraintsLoop(), btBatchedConstraints::setup(), setupSpatialGridBatchesMt(), solveDeformableBodyGroup(), solveDeformableGroupIterations(), btConstraintSolverPoolMt::solveGroup(), btMultiBodyMLCPConstraintSolver::solveGroupCacheFriendlyIterations(), btMLCPSolver::solveGroupCacheFriendlyIterations(), btMLCPSolver::solveGroupCacheFriendlySetup(), btMultiBodyMLCPConstraintSolver::solveGroupCacheFriendlySetup(), solveMultiBodyGroup(), solveSingleIteration(), uiTemplateConstraints(), btBatchedConstraints::validate(), and version_liboverride_rnacollections_insertion_object_constraints().

◆ infoGlobal

Definition at line 60 of file btSequentialImpulseConstraintSolverMt.h.

Referenced by addFrictionConstraint(), addMultiBodyFrictionConstraint(), addMultiBodySpinningFrictionConstraint(), addMultiBodyTorsionalFrictionConstraint(), allocAllContactConstraints(), CollectContactManifoldCachedInfoLoop::CollectContactManifoldCachedInfoLoop(), convertBodies(), convertContact(), convertContacts(), convertJoint(), convertJoints(), convertMultiBodyContact(), btMultiBodyFixedConstraint::createConstraintRows(), btMultiBodyGearConstraint::createConstraintRows(), btMultiBodyJointLimitConstraint::createConstraintRows(), btMultiBodyJointMotor::createConstraintRows(), btMultiBodySliderConstraint::createConstraintRows(), btMultiBodySphericalJointMotor::createConstraintRows(), btMLCPSolver::createMLCP(), btMultiBodyMLCPConstraintSolver::createMLCPFast(), btMLCPSolver::createMLCPFast(), btMultiBodyMLCPConstraintSolver::createMLCPFastMultiBody(), btMultiBodyMLCPConstraintSolver::createMLCPFastRigidBody(), fillMultiBodyConstraint(), internalCollectContactManifoldCachedInfo(), internalConvertBodies(), internalConvertMultipleJoints(), internalSetupContactConstraints(), internalWriteBackBodies(), internalWriteBackContacts(), internalWriteBackJoints(), btDeformableMultiBodyDynamicsWorld::positionCorrection(), btDeformableBackwardEulerObjective::setConstraints(), btDeformableBodySolver::setConstraints(), btDeformableContactProjection::setConstraints(), setFrictionConstraintImpulse(), setupAllContactConstraints(), setupContactConstraint(), SetupContactConstraintsLoop::SetupContactConstraintsLoop(), setupFrictionConstraint(), setupMultiBodyContactConstraint(), setupMultiBodyTorsionalFrictionConstraint(), btDeformableRigidContactConstraint::solveConstraint(), btDeformableBodySolver::solveContactConstraints(), solveDeformableGroupIterations(), solveGroupCacheFriendlyFinish(), btMultiBodyMLCPConstraintSolver::solveGroupCacheFriendlyIterations(), btMLCPSolver::solveGroupCacheFriendlyIterations(), btMLCPSolver::solveGroupCacheFriendlySetup(), btMultiBodyMLCPConstraintSolver::solveGroupCacheFriendlySetup(), solveGroupCacheFriendlySplitImpulseIterations(), btMultiBodyMLCPConstraintSolver::solveMLCP(), btMLCPSolver::solveMLCP(), solveSingleIteration(), btDeformableContactProjection::solveSplitImpulse(), btDeformableRigidContactConstraint::solveSplitImpulse(), btSimpleDynamicsWorld::stepSimulation(), btDeformableContactProjection::update(), writeBackBodies(), writeBackContacts(), writeBackJoints(), WriteBodiesLoop::WriteBodiesLoop(), WriteContactPointsLoop::WriteContactPointsLoop(), WriteJointsLoop::WriteJointsLoop(), and writeToSolverBody().

◆ m_antiFalseSharingPadding

char m_antiFalseSharingPadding[CACHE_LINE_SIZE]
protected

Definition at line 106 of file btSequentialImpulseConstraintSolverMt.h.

◆ m_batchedContactConstraints

btBatchedConstraints m_batchedContactConstraints
protected

◆ m_batchedJointConstraints

btBatchedConstraints m_batchedJointConstraints
protected

◆ m_bodySolverArrayMutex

btSpinMutex m_bodySolverArrayMutex
protected

◆ m_kinematicBodyUniqueIdToSolverBodyTableMutex

btSpinMutex m_kinematicBodyUniqueIdToSolverBodyTableMutex
protected

◆ m_manifoldCachedInfoArray

btAlignedObjectArray<btContactManifoldCachedInfo> m_manifoldCachedInfoArray
protected

Definition at line 103 of file btSequentialImpulseConstraintSolverMt.h.

◆ m_numFrictionDirections

int m_numFrictionDirections
protected

◆ m_rollingFrictionIndexTable

btAlignedObjectArray<int> m_rollingFrictionIndexTable
protected

◆ m_scratchMemory

btAlignedObjectArray<char> m_scratchMemory
protected

◆ m_useBatching

bool m_useBatching
protected

◆ m_useObsoleteJointConstraints

bool m_useObsoleteJointConstraints
protected

◆ manifoldPtr

◆ numBodies

◆ numConstraints

◆ numManifolds

◆ s_allowNestedParallelForLoops

bool btSequentialImpulseConstraintSolverMt::s_allowNestedParallelForLoops = false
static

Definition at line 88 of file btSequentialImpulseConstraintSolverMt.h.

◆ s_contactBatchingMethod

btBatchedConstraints::BatchingMethod btSequentialImpulseConstraintSolverMt::s_contactBatchingMethod = btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D
static

◆ s_jointBatchingMethod

btBatchedConstraints::BatchingMethod btSequentialImpulseConstraintSolverMt::s_jointBatchingMethod = btBatchedConstraints::BATCHING_METHOD_SPATIAL_GRID_2D
static

◆ s_maxBatchSize

int btSequentialImpulseConstraintSolverMt::s_maxBatchSize = 100
static

◆ s_minBatchSize

int btSequentialImpulseConstraintSolverMt::s_minBatchSize = 50
static

◆ s_minimumContactManifoldsForBatching

int btSequentialImpulseConstraintSolverMt::s_minimumContactManifoldsForBatching = 250
static