From ae6ee5456976ab7a7baafaafb98ae8a6fc44a671 Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Tue, 7 Apr 2015 17:11:02 +0200 Subject: [PATCH] Fix ray collision not using inverse rot --- interface/src/ui/ApplicationOverlay.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/interface/src/ui/ApplicationOverlay.cpp b/interface/src/ui/ApplicationOverlay.cpp index 93a8a55164..7fc3ba170d 100644 --- a/interface/src/ui/ApplicationOverlay.cpp +++ b/interface/src/ui/ApplicationOverlay.cpp @@ -501,10 +501,10 @@ QPoint ApplicationOverlay::getPalmClickLocation(const PalmData *palm) const { bool ApplicationOverlay::calculateRayUICollisionPoint(const glm::vec3& position, const glm::vec3& direction, glm::vec3& result) const { MyAvatar* myAvatar = DependencyManager::get()->getMyAvatar(); - glm::quat orientation = myAvatar->getOrientation(); + glm::quat inverseOrientation = glm::inverse(myAvatar->getOrientation()); - glm::vec3 relativePosition = orientation * (position - myAvatar->getDefaultEyePosition()); - glm::vec3 relativeDirection = orientation * direction; + glm::vec3 relativePosition = inverseOrientation * (position - myAvatar->getDefaultEyePosition()); + glm::vec3 relativeDirection = glm::normalize(inverseOrientation * direction); float t; if (raySphereIntersect(relativeDirection, relativePosition, _oculusUIRadius * myAvatar->getScale(), &t)){ @@ -515,8 +515,6 @@ bool ApplicationOverlay::calculateRayUICollisionPoint(const glm::vec3& position, return false; } - - //Renders optional pointers void ApplicationOverlay::renderPointers() { auto glCanvas = Application::getInstance()->getGLWidget();