From ed7fc07ab1140c2db7f7fdd22e060e4db27cb595 Mon Sep 17 00:00:00 2001 From: Zander Otavka Date: Wed, 15 Jul 2015 14:08:09 -0700 Subject: [PATCH] Fix cloning bug for BillboardOverlay. --- .../src/ui/overlays/BillboardOverlay.cpp | 1 + interface/src/ui/overlays/PanelAttachable.cpp | 33 +++++++++++++++++++ interface/src/ui/overlays/PanelAttachable.h | 17 +++------- interface/src/ui/overlays/Planar3DOverlay.cpp | 9 ++++- interface/src/ui/overlays/Planar3DOverlay.h | 4 +-- 5 files changed, 49 insertions(+), 15 deletions(-) create mode 100644 interface/src/ui/overlays/PanelAttachable.cpp diff --git a/interface/src/ui/overlays/BillboardOverlay.cpp b/interface/src/ui/overlays/BillboardOverlay.cpp index 9e1a9a44de..18d0307743 100644 --- a/interface/src/ui/overlays/BillboardOverlay.cpp +++ b/interface/src/ui/overlays/BillboardOverlay.cpp @@ -29,6 +29,7 @@ BillboardOverlay::BillboardOverlay() { BillboardOverlay::BillboardOverlay(const BillboardOverlay* billboardOverlay) : Planar3DOverlay(billboardOverlay), + PanelAttachable(billboardOverlay), _url(billboardOverlay->_url), _texture(billboardOverlay->_texture), _fromImage(billboardOverlay->_fromImage), diff --git a/interface/src/ui/overlays/PanelAttachable.cpp b/interface/src/ui/overlays/PanelAttachable.cpp new file mode 100644 index 0000000000..172880db97 --- /dev/null +++ b/interface/src/ui/overlays/PanelAttachable.cpp @@ -0,0 +1,33 @@ +// +// PanelAttachable.cpp +// hifi +// +// Created by Zander Otavka on 7/15/15. +// +// + +#include "PanelAttachable.h" + +PanelAttachable::PanelAttachable() : + _attachedPanel(nullptr), + _offsetPosition(glm::vec3()) +{ +} + +PanelAttachable::PanelAttachable(const PanelAttachable* panelAttachable) : + _attachedPanel(panelAttachable->_attachedPanel), + _offsetPosition(panelAttachable->_offsetPosition) +{ +} + +glm::vec3 PanelAttachable::getTranslatedPosition(glm::vec3 avatarPosition) const { + if (getAttachedPanel()) { + glm::vec3 totalOffsetPosition = + getAttachedPanel()->getFacingRotation() * getOffsetPosition() + + getAttachedPanel()->getOffsetPosition(); + + return getAttachedPanel()->getOffsetRotation() * totalOffsetPosition + + avatarPosition; + } + return glm::vec3(); +} diff --git a/interface/src/ui/overlays/PanelAttachable.h b/interface/src/ui/overlays/PanelAttachable.h index c364d62fa7..29b0673157 100644 --- a/interface/src/ui/overlays/PanelAttachable.h +++ b/interface/src/ui/overlays/PanelAttachable.h @@ -18,26 +18,19 @@ class PanelAttachable { public: + PanelAttachable(); + PanelAttachable(const PanelAttachable* panelAttachable); + glm::vec3 getOffsetPosition() const { return _offsetPosition; } void setOffsetPosition(glm::vec3 position) { _offsetPosition = position; } FloatingUIPanel* getAttachedPanel() const { return _attachedPanel; } void setAttachedPanel(FloatingUIPanel* panel) { _attachedPanel = panel; } - glm::vec3 getTranslatedPosition(glm::vec3 avatarPosition) { - if (getAttachedPanel()) { - glm::vec3 totalOffsetPosition = - getAttachedPanel()->getFacingRotation() * getOffsetPosition() + - getAttachedPanel()->getOffsetPosition(); - - return getAttachedPanel()->getOffsetRotation() * totalOffsetPosition + - avatarPosition; - } - return glm::vec3(); - } + glm::vec3 getTranslatedPosition(glm::vec3 avatarPosition) const; private: - FloatingUIPanel* _attachedPanel = nullptr; + FloatingUIPanel* _attachedPanel; glm::vec3 _offsetPosition = glm::vec3(0, 0, 0); }; diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index 0ca092ba23..354991b596 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -14,8 +14,15 @@ #include #include +Planar3DOverlay::Planar3DOverlay() : + Base3DOverlay(), + _dimensions{1.0f, 1.0f} +{ +} + Planar3DOverlay::Planar3DOverlay(const Planar3DOverlay* planar3DOverlay) : - Base3DOverlay(planar3DOverlay) + Base3DOverlay(planar3DOverlay), + _dimensions(planar3DOverlay->_dimensions) { } diff --git a/interface/src/ui/overlays/Planar3DOverlay.h b/interface/src/ui/overlays/Planar3DOverlay.h index fe8c513efd..08a7121e91 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.h +++ b/interface/src/ui/overlays/Planar3DOverlay.h @@ -17,7 +17,7 @@ class Planar3DOverlay : public Base3DOverlay { Q_OBJECT public: - Planar3DOverlay() {} + Planar3DOverlay(); Planar3DOverlay(const Planar3DOverlay* planar3DOverlay); AABox getBounds() const; @@ -32,7 +32,7 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face); protected: - glm::vec2 _dimensions{1.0f, 1.0f}; + glm::vec2 _dimensions; };