Fix issue with limits of HingeJoint and SliderJoint
This commit is contained in:
parent
9407651316
commit
c1f40ac456
|
@ -92,12 +92,12 @@ void HingeJoint::initBeforeSolve(const ConstraintSolverData& constraintSolverDat
|
||||||
decimal upperLimitError = mUpperLimit - hingeAngle;
|
decimal upperLimitError = mUpperLimit - hingeAngle;
|
||||||
bool oldIsLowerLimitViolated = mIsLowerLimitViolated;
|
bool oldIsLowerLimitViolated = mIsLowerLimitViolated;
|
||||||
mIsLowerLimitViolated = lowerLimitError <= 0;
|
mIsLowerLimitViolated = lowerLimitError <= 0;
|
||||||
if (mIsLowerLimitViolated != oldIsLowerLimitViolated) {
|
if (!mIsLowerLimitViolated || mIsLowerLimitViolated != oldIsLowerLimitViolated) {
|
||||||
mImpulseLowerLimit = 0.0;
|
mImpulseLowerLimit = 0.0;
|
||||||
}
|
}
|
||||||
bool oldIsUpperLimitViolated = mIsUpperLimitViolated;
|
bool oldIsUpperLimitViolated = mIsUpperLimitViolated;
|
||||||
mIsUpperLimitViolated = upperLimitError <= 0;
|
mIsUpperLimitViolated = upperLimitError <= 0;
|
||||||
if (mIsUpperLimitViolated != oldIsUpperLimitViolated) {
|
if (!mIsUpperLimitViolated || mIsUpperLimitViolated != oldIsUpperLimitViolated) {
|
||||||
mImpulseUpperLimit = 0.0;
|
mImpulseUpperLimit = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -107,12 +107,12 @@ void SliderJoint::initBeforeSolve(const ConstraintSolverData& constraintSolverDa
|
||||||
decimal upperLimitError = mUpperLimit - uDotSliderAxis;
|
decimal upperLimitError = mUpperLimit - uDotSliderAxis;
|
||||||
bool oldIsLowerLimitViolated = mIsLowerLimitViolated;
|
bool oldIsLowerLimitViolated = mIsLowerLimitViolated;
|
||||||
mIsLowerLimitViolated = lowerLimitError <= 0;
|
mIsLowerLimitViolated = lowerLimitError <= 0;
|
||||||
if (mIsLowerLimitViolated != oldIsLowerLimitViolated) {
|
if (!mIsLowerLimitViolated || mIsLowerLimitViolated != oldIsLowerLimitViolated) {
|
||||||
mImpulseLowerLimit = 0.0;
|
mImpulseLowerLimit = 0.0;
|
||||||
}
|
}
|
||||||
bool oldIsUpperLimitViolated = mIsUpperLimitViolated;
|
bool oldIsUpperLimitViolated = mIsUpperLimitViolated;
|
||||||
mIsUpperLimitViolated = upperLimitError <= 0;
|
mIsUpperLimitViolated = upperLimitError <= 0;
|
||||||
if (mIsUpperLimitViolated != oldIsUpperLimitViolated) {
|
if (!mIsUpperLimitViolated || mIsUpperLimitViolated != oldIsUpperLimitViolated) {
|
||||||
mImpulseUpperLimit = 0.0;
|
mImpulseUpperLimit = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user