diff --git a/src/constraint/HingeJoint.cpp b/src/constraint/HingeJoint.cpp index f7c2f273..8967e673 100644 --- a/src/constraint/HingeJoint.cpp +++ b/src/constraint/HingeJoint.cpp @@ -92,12 +92,12 @@ void HingeJoint::initBeforeSolve(const ConstraintSolverData& constraintSolverDat decimal upperLimitError = mUpperLimit - hingeAngle; bool oldIsLowerLimitViolated = mIsLowerLimitViolated; mIsLowerLimitViolated = lowerLimitError <= 0; - if (mIsLowerLimitViolated != oldIsLowerLimitViolated) { + if (!mIsLowerLimitViolated || mIsLowerLimitViolated != oldIsLowerLimitViolated) { mImpulseLowerLimit = 0.0; } bool oldIsUpperLimitViolated = mIsUpperLimitViolated; mIsUpperLimitViolated = upperLimitError <= 0; - if (mIsUpperLimitViolated != oldIsUpperLimitViolated) { + if (!mIsUpperLimitViolated || mIsUpperLimitViolated != oldIsUpperLimitViolated) { mImpulseUpperLimit = 0.0; } diff --git a/src/constraint/SliderJoint.cpp b/src/constraint/SliderJoint.cpp index 7704d1cd..22bc9721 100644 --- a/src/constraint/SliderJoint.cpp +++ b/src/constraint/SliderJoint.cpp @@ -107,12 +107,12 @@ void SliderJoint::initBeforeSolve(const ConstraintSolverData& constraintSolverDa decimal upperLimitError = mUpperLimit - uDotSliderAxis; bool oldIsLowerLimitViolated = mIsLowerLimitViolated; mIsLowerLimitViolated = lowerLimitError <= 0; - if (mIsLowerLimitViolated != oldIsLowerLimitViolated) { + if (!mIsLowerLimitViolated || mIsLowerLimitViolated != oldIsLowerLimitViolated) { mImpulseLowerLimit = 0.0; } bool oldIsUpperLimitViolated = mIsUpperLimitViolated; mIsUpperLimitViolated = upperLimitError <= 0; - if (mIsUpperLimitViolated != oldIsUpperLimitViolated) { + if (!mIsUpperLimitViolated || mIsUpperLimitViolated != oldIsUpperLimitViolated) { mImpulseUpperLimit = 0.0; }