Fix issue with limits of HingeJoint and SliderJoint

This commit is contained in:
Daniel Chappuis 2020-05-08 15:10:49 +02:00
parent 9407651316
commit c1f40ac456
2 changed files with 4 additions and 4 deletions

View File

@ -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;
}

View File

@ -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;
}