From c6e6da2e3f91b0eb0e7db056e1e762c737968a02 Mon Sep 17 00:00:00 2001 From: sabrina-shanman Date: Mon, 27 Aug 2018 15:38:36 -0700 Subject: [PATCH] Make MouseTransformNode actually parent the pick to a mouse rather than a MouseRayPick, and properly include rotation information --- interface/src/raypick/MouseTransformNode.cpp | 42 ++++++-------------- interface/src/raypick/MouseTransformNode.h | 5 --- 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/interface/src/raypick/MouseTransformNode.cpp b/interface/src/raypick/MouseTransformNode.cpp index 4bc85ae69a..9caa4865a2 100644 --- a/interface/src/raypick/MouseTransformNode.cpp +++ b/interface/src/raypick/MouseTransformNode.cpp @@ -8,36 +8,20 @@ #include "MouseTransformNode.h" -#include "DependencyManager.h" -#include "PickManager.h" -#include "MouseRayPick.h" - -const PickFilter MOUSE_TRANSFORM_NODE_PICK_FILTER( - 1 << PickFilter::PICK_ENTITIES | - 1 << PickFilter::PICK_AVATARS | - 1 << PickFilter::PICK_INCLUDE_NONCOLLIDABLE -); -const float MOUSE_TRANSFORM_NODE_MAX_DISTANCE = 1000.0f; - -MouseTransformNode::MouseTransformNode() { - _parentMouseRayPick = DependencyManager::get()->addPick(PickQuery::Ray, - std::make_shared(MOUSE_TRANSFORM_NODE_PICK_FILTER, MOUSE_TRANSFORM_NODE_MAX_DISTANCE, true)); -} - -MouseTransformNode::~MouseTransformNode() { - if (DependencyManager::isSet()) { - auto pickManager = DependencyManager::get(); - if (pickManager) { - pickManager->removePick(_parentMouseRayPick); - } - } -} +#include "Application.h" +#include "display-plugins/CompositorHelper.h" +#include "RayPick.h" Transform MouseTransformNode::getTransform() { - Transform transform; - std::shared_ptr rayPickResult = DependencyManager::get()->getPrevPickResultTyped(_parentMouseRayPick); - if (rayPickResult) { - transform.setTranslation(rayPickResult->intersection); + QVariant position = qApp->getApplicationCompositor().getReticleInterface()->getPosition(); + if (position.isValid()) { + Transform transform; + QVariantMap posMap = position.toMap(); + PickRay pickRay = qApp->getCamera().computePickRay(posMap["x"].toFloat(), posMap["y"].toFloat()); + transform.setTranslation(pickRay.origin); + transform.setRotation(rotationBetween(Vectors::UP, pickRay.direction)); + return transform; } - return transform; + + return Transform(); } \ No newline at end of file diff --git a/interface/src/raypick/MouseTransformNode.h b/interface/src/raypick/MouseTransformNode.h index 7a05370dd7..4f340339e4 100644 --- a/interface/src/raypick/MouseTransformNode.h +++ b/interface/src/raypick/MouseTransformNode.h @@ -12,12 +12,7 @@ class MouseTransformNode : public TransformNode { public: - MouseTransformNode(); - ~MouseTransformNode(); Transform getTransform() override; - -protected: - unsigned int _parentMouseRayPick = 0; }; #endif // hifi_MouseTransformNode_h \ No newline at end of file