From 2f6749ff691c8e4e072df804a3ca400a74bd008e Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 5 Feb 2015 09:38:45 -0800 Subject: [PATCH] Implement dimensions test for 3D planar overlay intersection --- interface/src/ui/overlays/Planar3DOverlay.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index 628ff6a7dc..508b5c4227 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -93,7 +93,6 @@ QScriptValue Planar3DOverlay::getProperty(const QString& property) { bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) { - RayIntersectionInfo rayInfo; rayInfo._rayStart = origin; rayInfo._rayDirection = direction; @@ -110,9 +109,13 @@ bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve if (intersects) { distance = rayInfo._hitDistance; - // TODO: if it intersects, we want to check to see if the intersection point is within our dimensions - // glm::vec3 hitAt = origin + direction * distance; - // _dimensions + + glm::vec3 hitPosition = origin + (distance * direction); + glm::vec3 localHitPosition = glm::inverse(_rotation) * (hitPosition - _position); + glm::vec2 halfDimensions = _dimensions / 2.0f; + + intersects = -halfDimensions.x <= localHitPosition.x && localHitPosition.x <= halfDimensions.x + && -halfDimensions.y <= localHitPosition.y && localHitPosition.y <= halfDimensions.y; } return intersects; }