From c1f40ac45618fbeceddbbe0ab909457e076bd7f1 Mon Sep 17 00:00:00 2001 From: Daniel Chappuis Date: Fri, 8 May 2020 15:10:49 +0200 Subject: [PATCH] Fix issue with limits of HingeJoint and SliderJoint --- src/constraint/HingeJoint.cpp | 4 ++-- src/constraint/SliderJoint.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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; }