78 for (
int i=0;i<numBodies;i++)
94 for (
int i = 0; i < ndof; ++i)
112 for (
int i = 0; i < ndofA; ++i)
123 for (
int i = 0; i < ndofB; ++i)
184 for (
int i = 0; i < ndofA; ++i)
191 for (
int i = 0; i < ndofB; ++i)
235 BT_PROFILE(
"setupMultiBodyContactConstraint");
334 for (
int i = 0; i < ndofA; ++i)
353 for (
int i = 0; i < ndofB; ++i)
369 if (multiBodyA && (multiBodyA==multiBodyB))
372 for (
int i = 0; i < ndofA; ++i)
374 denom1 += jacB[i] * lambdaA[i];
375 denom1 += jacA[i] * lambdaB[i];
409 for (
int i = 0; i < ndofA ; ++i)
422 for (
int i = 0; i < ndofB ; ++i)
485 btScalar velocityError = restitution - rel_vel;
491 erp = infoGlobal.
m_erp;
497 velocityError = -penetration / infoGlobal.
m_timeStep;
501 positionalError = -penetration * erp/infoGlobal.
m_timeStep;
510 solverConstraint.
m_rhs = penetrationImpulse+velocityImpulse;
516 solverConstraint.
m_rhs = velocityImpulse;
520 solverConstraint.
m_cfm = 0.f;
535 bool isFriction =
true;
554 solverConstraint.
m_linkB = fcB->m_link;
559 return solverConstraint;
586 int rollingFriction=1;
612 solverConstraint.
m_linkB = fcB->m_link;
616 bool isFriction =
false;
623 #define ENABLE_FRICTION
624 #ifdef ENABLE_FRICTION
643 if (relAngVel.
length()>0.001)
662 #endif //ROLLING_FRICTION
736 #endif //ENABLE_FRICTION
746 for (
int i=0;i<numManifolds;i++)
783 void btMultiBodyConstraintSolver::solveMultiBodyGroup(
btCollisionObject** bodies,
int numBodies,
btPersistentManifold** manifold,
int numManifolds,
btTypedConstraint** constraints,
int numConstraints,
btMultiBodyConstraint** multiBodyConstraints,
int numMultiBodyConstraints,
const btContactSolverInfo& info,
btIDebugDraw* debugDrawer,
btDispatcher* dispatcher)