From c579f7061144a338c128d019b31ce81e19a8be4b Mon Sep 17 00:00:00 2001 From: LionTurtle Date: Fri, 16 Aug 2013 11:44:23 -0700 Subject: [PATCH] Render lookatIndicator for cursor select even when gyros are on for more consistent behavior. --- interface/src/Application.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index c4739c044d..633f35b632 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2612,17 +2612,20 @@ void Application::updateAvatar(float deltaTime) { _headMouseY = min(_headMouseY, _glWidget->height()); const float MIDPOINT_OF_SCREEN = 0.5; - - // Set lookAtPosition if an avatar is at the center of the screen - glm::vec3 screenCenterRayOrigin, screenCenterRayDirection; - _viewFrustum.computePickRay(MIDPOINT_OF_SCREEN, MIDPOINT_OF_SCREEN, screenCenterRayOrigin, screenCenterRayDirection); - - glm::vec3 eyePosition; - _isLookingAtOtherAvatar = isLookingAtOtherAvatar(screenCenterRayOrigin, screenCenterRayDirection, eyePosition); - if (_isLookingAtOtherAvatar) { - glm::vec3 myLookAtFromMouse(eyePosition); - _myAvatar.getHead().setLookAtPosition(myLookAtFromMouse); + // Only use gyro to set lookAt if mouse hasn't selected an avatar + if (!_isLookingAtOtherAvatar) { + + // Set lookAtPosition if an avatar is at the center of the screen + glm::vec3 screenCenterRayOrigin, screenCenterRayDirection; + _viewFrustum.computePickRay(MIDPOINT_OF_SCREEN, MIDPOINT_OF_SCREEN, screenCenterRayOrigin, screenCenterRayDirection); + + glm::vec3 eyePosition; + _isLookingAtOtherAvatar = isLookingAtOtherAvatar(screenCenterRayOrigin, screenCenterRayDirection, eyePosition); + if (_isLookingAtOtherAvatar) { + glm::vec3 myLookAtFromMouse(eyePosition); + _myAvatar.getHead().setLookAtPosition(myLookAtFromMouse); + } } } @@ -3027,6 +3030,7 @@ void Application::displaySide(Camera& whichCamera) { if (!avatar->isInitialized()) { avatar->init(); } + // Set lookAt to myCamera on client side if other avatars are looking at client if (isLookingAtMyAvatar(avatar)) { avatar->getHead().setLookAtPosition(_myCamera.getPosition()); }