From 8ccdfaf22007dc5634714bb1ac7209bced200fe9 Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Tue, 19 Nov 2019 12:05:25 -0800 Subject: [PATCH 1/2] Clamp rotation velocity if hit trigger angle, but only bounce forward if cameraYaw is true. --- interface/src/avatar/MyAvatar.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 4e7b8a07f1..01587baa99 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3620,14 +3620,17 @@ void MyAvatar::updateOrientation(float deltaTime) { ajustedYawVector = (leftRightDot < 0.0f ? -avatarVectorRight : avatarVectorRight); } if (frontBackDot < limitAngle) { + _seatedBodyYawDelta = 0.0f; + if (!isRotatingWhileSeated) { - if (frontBackDot < triggerAngle) { + if (frontBackDot < triggerAngle && isCameraYawing) { _shouldTurnToFaceCamera = true; _firstPersonSteadyHeadTimer = 0.0f; + } else { + setWorldOrientation(previousOrientation); } } else { setWorldOrientation(previousOrientation); - _seatedBodyYawDelta = 0.0f; } } else if (frontBackDot > glm::sin(glm::radians(reorientAngle))) { _shouldTurnToFaceCamera = false; From 19aacde3a2b70ea5f4eff0bbda7a855e4f9d5fcb Mon Sep 17 00:00:00 2001 From: DouglasWilcox <916219+DouglasWilcox@users.noreply.github.com> Date: Tue, 19 Nov 2019 14:32:51 -0800 Subject: [PATCH 2/2] Fix case where Avatar could get stuck facing camera if rotating camera quickly and avatar faced backward. --- interface/src/avatar/MyAvatar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 01587baa99..c12defe7b6 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -3620,14 +3620,14 @@ void MyAvatar::updateOrientation(float deltaTime) { ajustedYawVector = (leftRightDot < 0.0f ? -avatarVectorRight : avatarVectorRight); } if (frontBackDot < limitAngle) { - _seatedBodyYawDelta = 0.0f; if (!isRotatingWhileSeated) { - if (frontBackDot < triggerAngle && isCameraYawing) { + if (frontBackDot < triggerAngle && _seatedBodyYawDelta == 0.0f) { _shouldTurnToFaceCamera = true; _firstPersonSteadyHeadTimer = 0.0f; } else { setWorldOrientation(previousOrientation); + _seatedBodyYawDelta = 0.0f; } } else { setWorldOrientation(previousOrientation);