|
Bullet Collision Detection & Physics Library
|
Go to the documentation of this file.
52 for (
int j=0; j<numNonContactPool; ++j) {
62 for (
int j=0; j<numConstraintPool; ++j) {
69 for (
int j=0; j<numFrictionPool; ++j) {
89 deltaflengthsqr += deltaf * deltaf;
134 for (
int j=0;j<numConstraints;j++)
136 if (constraints[j]->isEnabled())
152 for (
int c=0;c<numPoolConstraints;c++)
160 deltaflengthsqr += deltaf*deltaf;
163 bool applyFriction =
true;
176 deltaflengthsqr += deltaf*deltaf;
193 deltaflengthsqr += deltaf*deltaf;
208 for (j=0;j<numPoolConstraints;j++)
213 deltaflengthsqr += deltaf*deltaf;
221 for (j=0;j<numFrictionPoolConstraints;j++)
233 deltaflengthsqr += deltaf*deltaf;
242 for (
int j=0;j<numRollingFrictionPoolConstraints;j++)
249 btScalar rollingFrictionMagnitude = rollingFrictionConstraint.
m_friction*totalImpulse;
250 if (rollingFrictionMagnitude>rollingFrictionConstraint.
m_friction)
251 rollingFrictionMagnitude = rollingFrictionConstraint.
m_friction;
253 rollingFrictionConstraint.
m_lowerLimit = -rollingFrictionMagnitude;
254 rollingFrictionConstraint.
m_upperLimit = rollingFrictionMagnitude;
258 deltaflengthsqr += deltaf*deltaf;
355 return deltaflengthsqr;
btConstraintArray m_tmpSolverContactFrictionConstraintPool
The btSolverBody is an internal datastructure for the constraint solver. Only necessary data is packe...
TypedConstraint is the baseclass for Bullet constraints and vehicles.
btCollisionObject can be used to manage collision detection objects.
const btVector3 & internalGetInvMass() const
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
btAlignedObjectArray< btScalar > m_deltafCF
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
btAlignedObjectArray< int > m_orderFrictionConstraintPool
btAlignedObjectArray< btScalar > m_pCRF
btVector3 m_contactNormal2
btConstraintArray m_tmpSolverContactRollingFrictionConstraintPool
virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
void internalApplyImpulse(const btVector3 &linearComponent, const btVector3 &angularComponent, const btScalar impulseMagnitude)
btVector3 m_angularComponentB
btVector3 m_contactNormal1
bool m_onlyForNoneContact
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations.
btAlignedObjectArray< btScalar > m_pC
virtual btScalar solveGroupCacheFriendlyFinish(btCollisionObject **bodies, int numBodies, const btContactSolverInfo &infoGlobal)
btAlignedObjectArray< btScalar > m_pNC
btAlignedObjectArray< int > m_orderTmpConstraintPool
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
btScalar m_deltafLengthSqrPrev
int m_overrideNumSolverIterations
btAlignedObjectArray< btScalar > m_deltafC
btConstraintArray m_tmpSolverContactConstraintPool
virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
virtual void solveConstraintObsolete(btSolverBody &, btSolverBody &, btScalar)
internal method used by the constraint solver, don't use them directly
btAlignedObjectArray< int > m_orderNonContactConstraintPool
btAlignedObjectArray< btSolverBody > m_tmpSolverBodyPool
virtual btScalar solveGroupCacheFriendlySetup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
btAlignedObjectArray< btScalar > m_deltafCRF
virtual btScalar solveSingleIteration(int iteration, btCollisionObject **bodies, int numBodies, btPersistentManifold **manifoldPtr, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &infoGlobal, btIDebugDraw *debugDrawer)
btConstraintArray m_tmpSolverNonContactConstraintPool
btSimdScalar resolveSingleConstraintRowLowerLimit(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)
void resizeNoInitialize(int newsize)
resize changes the number of elements in the array.
btAlignedObjectArray< btScalar > m_pCF
btSimdScalar m_appliedImpulse
int getOrInitSolverBody(btCollisionObject &body, btScalar timeStep)
btAlignedObjectArray< btScalar > m_deltafNC
int size() const
return the number of elements in the array
btVector3 m_angularComponentA
btSimdScalar resolveSingleConstraintRowGeneric(btSolverBody &bodyA, btSolverBody &bodyB, const btSolverConstraint &contactConstraint)