52                         for (
int j=0; j<numNonContactPool; ++j) {
    62                                 for (
int j=0; j<numConstraintPool; ++j) {
    69                                 for (
int j=0; j<numFrictionPool; ++j) {
    91                                 deltaflengthsqr += deltaf * deltaf;
   103                                 deltaflengthsqr += deltaf * deltaf;
   149                         for (
int j=0;j<numConstraints;j++)
   151                                 if (constraints[j]->isEnabled())
   167                                 for (
int c=0;c<numPoolConstraints;c++)
   175                                                 deltaflengthsqr += deltaf*deltaf;
   178                                         bool applyFriction = 
true;
   191                                                                 deltaflengthsqr += deltaf*deltaf;
   208                                                                 deltaflengthsqr += deltaf*deltaf;
   223                                 for (j=0;j<numPoolConstraints;j++)
   229                                         deltaflengthsqr += deltaf*deltaf;
   237                                 for (j=0;j<numFrictionPoolConstraints;j++)
   250                                                 deltaflengthsqr += deltaf*deltaf;
   258                                 for (j=0;j<numRollingFrictionPoolConstraints;j++)
   265                                                 btScalar rollingFrictionMagnitude = rollingFrictionConstraint.
m_friction*totalImpulse;
   266                                                 if (rollingFrictionMagnitude>rollingFrictionConstraint.
m_friction)
   267                                                         rollingFrictionMagnitude = rollingFrictionConstraint.
m_friction;
   269                                                 rollingFrictionConstraint.
m_lowerLimit = -rollingFrictionMagnitude;
   270                                                 rollingFrictionConstraint.
m_upperLimit = rollingFrictionMagnitude;
   274                                                 deltaflengthsqr += deltaf*deltaf;
   291                         for (
int j=0;j<numConstraints;j++)
   293                                 if (constraints[j]->isEnabled())
   304                         for (
int j=0;j<numPoolConstraints;j++)
   309                                 deltaflengthsqr += deltaf*deltaf;
   313                         for (
int j=0;j<numFrictionPoolConstraints;j++)
   325                                         deltaflengthsqr += deltaf*deltaf;
   332                         for (
int j=0;j<numRollingFrictionPoolConstraints;j++)
   338                                         btScalar rollingFrictionMagnitude = rollingFrictionConstraint.
m_friction*totalImpulse;
   339                                         if (rollingFrictionMagnitude>rollingFrictionConstraint.
m_friction)
   340                                                 rollingFrictionMagnitude = rollingFrictionConstraint.
m_friction;
   342                                         rollingFrictionConstraint.
m_lowerLimit = -rollingFrictionMagnitude;
   343                                         rollingFrictionConstraint.
m_upperLimit = rollingFrictionMagnitude;
   347                                         deltaflengthsqr += deltaf*deltaf;
   444         return deltaflengthsqr;
 btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
int m_overrideNumSolverIterations
btConstraintArray m_tmpSolverContactFrictionConstraintPool
btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool
void internalApplyImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, const btScalar impulseMagnitude)
btAlignedObjectArray< btScalar > m_pCRF
virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
void resizeNoInitialize(int newsize)
resize changes the number of elements in the array. 
virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
btSimdScalar resolveSingleConstraintRowLowerLimit(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btAlignedObjectArray< btScalar > m_pNC
btAlignedObjectArray< int > m_orderTmpConstraintPool
btScalar m_deltafLengthSqrPrev
bool m_onlyForNoneContact
int getOrInitSolverBody(btCollisionObject &body, btScalar timeStep)
btVector3 m_angularComponentA
btAlignedObjectArray< btSolverBody > m_tmpSolverBodyPool
btAlignedObjectArray< btScalar > m_deltafCRF
int size() const 
return the number of elements in the array 
btSimdScalar resolveSingleConstraintRowGeneric(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btConstraintArray m_tmpSolverContactConstraintPool
btCollisionObject can be used to manage collision detection objects. 
btAlignedObjectArray< btScalar > m_deltafC
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
btVector3 m_angularComponentB
const btVector3 & internalGetInvMass() const 
btSimdScalar resolveSingleConstraintRowGenericSIMD(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
virtual void solveConstraintObsolete(btSolverBody &, btSolverBody &, btScalar)
internal method used by the constraint solver, don't use them directly 
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
virtual btScalar solveSingleIteration(int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
TypedConstraint is the baseclass for Bullet constraints and vehicles. 
virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
btAlignedObjectArray< btScalar > m_deltafCF
btAlignedObjectArray< btScalar > m_deltafNC
btVector3 m_contactNormal1
btAlignedObjectArray< int > m_orderFrictionConstraintPool
btAlignedObjectArray< btScalar > m_pC
btAlignedObjectArray< int > m_orderNonContactConstraintPool
btSimdScalar resolveSingleConstraintRowLowerLimitSIMD(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
btAlignedObjectArray< btScalar > m_pCF
btSimdScalar m_appliedImpulse
virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
btConstraintArray m_tmpSolverNonContactConstraintPool
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btVector3 m_contactNormal2