From 45fdf3d68f76702f46753392f978a719e4d74ed7 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Tue, 19 Jun 2018 17:08:05 -0700 Subject: [PATCH] Fix crash when walking sideways --- interface/src/avatar/MyCharacterController.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/interface/src/avatar/MyCharacterController.cpp b/interface/src/avatar/MyCharacterController.cpp index 7e38c7763a..5356382605 100755 --- a/interface/src/avatar/MyCharacterController.cpp +++ b/interface/src/avatar/MyCharacterController.cpp @@ -108,12 +108,15 @@ bool MyCharacterController::testRayShotgun(const glm::vec3& position, const glm: btScalar lengthAxis = axis.length(); if (lengthAxis > FLT_EPSILON) { // we're walking sideways - btScalar angle = acosf(lengthAxis / adjustedDirection.length()); - if (rayDirection.dot(forward) < 0.0f) { - angle = PI - angle; + btScalar cosAngle = lengthAxis / adjustedDirection.length(); + if (cosAngle < 1) { + btScalar angle = acosf(cosAngle); + if (rayDirection.dot(forward) < 0.0f) { + angle = PI - angle; + } + axis /= lengthAxis; + rotation = btMatrix3x3(btQuaternion(axis, angle)) * rotation; } - axis /= lengthAxis; - rotation = btMatrix3x3(btQuaternion(axis, angle)) * rotation; } else if (rayDirection.dot(forward) < 0.0f) { // we're walking backwards rotation = btMatrix3x3(btQuaternion(_currentUp, PI)) * rotation;