From 61b28621eaf73dbc861951769cb3228969e5ef73 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 21 Mar 2017 09:24:00 -0700 Subject: [PATCH] minor fix in friction anchors for btMultiBody --- .../btMultiBodyConstraintSolver.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp b/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp index 77a4901e5..dac631c08 100644 --- a/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp +++ b/src/BulletDynamics/Featherstone/btMultiBodyConstraintSolver.cpp @@ -543,15 +543,20 @@ void btMultiBodyConstraintSolver::setupMultiBodyContactConstraint(btMultiBodySol btScalar positionalError = 0.f; btScalar velocityError = restitution - rel_vel;// * damping; //note for friction restitution is always set to 0 (check above) so it is acutally velocityError = -rel_vel for friction - - if (distance>0) - { - positionalError = 0; - velocityError -= distance / infoGlobal.m_timeStep; - - } else + if (isFriction) { positionalError = -distance * erp/infoGlobal.m_timeStep; + } else + { + if (distance>0) + { + positionalError = 0; + velocityError -= distance / infoGlobal.m_timeStep; + + } else + { + positionalError = -distance * erp/infoGlobal.m_timeStep; + } } btScalar penetrationImpulse = positionalError*solverConstraint.m_jacDiagABInv;