diff --git a/libraries/physics/src/ObjectConstraintHinge.cpp b/libraries/physics/src/ObjectConstraintHinge.cpp index 730fe5683e..cf91ca904b 100644 --- a/libraries/physics/src/ObjectConstraintHinge.cpp +++ b/libraries/physics/src/ObjectConstraintHinge.cpp @@ -104,13 +104,13 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() { return nullptr; } - if (glm::length(axisInA) == 0.0f) { + if (glm::length(axisInA) < FLT_EPSILON) { qCWarning(physics) << "hinge axis cannot be a zero vector"; axisInA = DEFAULT_HINGE_AXIS; + } else { + axisInA = glm::normalize(axisInA); } - axisInA = glm::normalize(axisInA); - if (!otherEntityID.isNull()) { // This hinge is between two entities... find the other rigid body. btRigidBody* rigidBodyB = getOtherRigidBody(otherEntityID); @@ -118,13 +118,13 @@ btTypedConstraint* ObjectConstraintHinge::getConstraint() { return nullptr; } - if (glm::length(axisInB)) { + if (glm::length(axisInB) < FLT_EPSILON) { qCWarning(physics) << "hinge axis cannot be a zero vector"; axisInB = DEFAULT_HINGE_AXIS; + } else { + axisInB = glm::normalize(axisInB); } - axisInB = glm::normalize(axisInB); - constraint = new btHingeConstraint(*rigidBodyA, *rigidBodyB, glmToBullet(pivotInA), glmToBullet(pivotInB), glmToBullet(axisInA), glmToBullet(axisInB),