diff --git a/interface/src/ui/overlays/Base3DOverlay.cpp b/interface/src/ui/overlays/Base3DOverlay.cpp index db252d8a04..06e26e0781 100644 --- a/interface/src/ui/overlays/Base3DOverlay.cpp +++ b/interface/src/ui/overlays/Base3DOverlay.cpp @@ -16,15 +16,12 @@ #include "Application.h" #include "Base3DOverlay.h" -const glm::vec3 DEFAULT_POSITION = glm::vec3(0.0f, 0.0f, 0.0f); const float DEFAULT_LINE_WIDTH = 1.0f; const bool DEFAULT_IS_SOLID = false; const bool DEFAULT_IS_DASHED_LINE = false; Base3DOverlay::Base3DOverlay() : - _position(DEFAULT_POSITION), _lineWidth(DEFAULT_LINE_WIDTH), - _rotation(), _isSolid(DEFAULT_IS_SOLID), _isDashedLine(DEFAULT_IS_DASHED_LINE), _ignoreRayIntersection(false), @@ -35,9 +32,8 @@ Base3DOverlay::Base3DOverlay() : Base3DOverlay::Base3DOverlay(const Base3DOverlay* base3DOverlay) : Overlay(base3DOverlay), - _position(base3DOverlay->_position), + _transform(base3DOverlay->_transform), _lineWidth(base3DOverlay->_lineWidth), - _rotation(base3DOverlay->_rotation), _isSolid(base3DOverlay->_isSolid), _isDashedLine(base3DOverlay->_isDashedLine), _ignoreRayIntersection(base3DOverlay->_ignoreRayIntersection), @@ -46,14 +42,6 @@ Base3DOverlay::Base3DOverlay(const Base3DOverlay* base3DOverlay) : { } -Base3DOverlay::~Base3DOverlay() { -} - -// TODO: Implement accurate getBounds() implementations -AABox Base3DOverlay::getBounds() const { - return AABox(_position, glm::vec3(1.0f)); -} - void Base3DOverlay::setProperties(const QScriptValue& properties) { Overlay::setProperties(properties); @@ -151,13 +139,13 @@ void Base3DOverlay::setProperties(const QScriptValue& properties) { QScriptValue Base3DOverlay::getProperty(const QString& property) { if (property == "position" || property == "start" || property == "p1" || property == "point") { - return vec3toScriptValue(_scriptEngine, _position); + return vec3toScriptValue(_scriptEngine, getPosition()); } if (property == "lineWidth") { return _lineWidth; } if (property == "rotation") { - return quatToScriptValue(_scriptEngine, _rotation); + return quatToScriptValue(_scriptEngine, getRotation()); } if (property == "isSolid" || property == "isFilled" || property == "solid" || property == "filed") { return _isSolid; diff --git a/interface/src/ui/overlays/Base3DOverlay.h b/interface/src/ui/overlays/Base3DOverlay.h index b24908a0cc..99126346bf 100644 --- a/interface/src/ui/overlays/Base3DOverlay.h +++ b/interface/src/ui/overlays/Base3DOverlay.h @@ -15,6 +15,7 @@ #include #include +#include #include "Overlay.h" @@ -24,32 +25,35 @@ class Base3DOverlay : public Overlay { public: Base3DOverlay(); Base3DOverlay(const Base3DOverlay* base3DOverlay); - ~Base3DOverlay(); // getters virtual bool is3D() const { return true; } - const glm::vec3& getPosition() const { return _position; } - const glm::vec3& getCenter() const { return _position; } // TODO: consider implementing registration points in this class + const glm::vec3& getPosition() const { return _transform.getTranslation(); } + const glm::quat& getRotation() const { return _transform.getRotation(); } + + // TODO: consider implementing registration points in this class + const glm::vec3& getCenter() const { return getPosition(); } + float getLineWidth() const { return _lineWidth; } bool getIsSolid() const { return _isSolid; } bool getIsDashedLine() const { return _isDashedLine; } bool getIsSolidLine() const { return !_isDashedLine; } - const glm::quat& getRotation() const { return _rotation; } bool getIgnoreRayIntersection() const { return _ignoreRayIntersection; } bool getDrawInFront() const { return _drawInFront; } bool getDrawOnHUD() const { return _drawOnHUD; } // setters - void setPosition(const glm::vec3& position) { _position = position; } + void setPosition(const glm::vec3& value) { _transform.setTranslation(value); } + void setRotation(const glm::quat& value) { _transform.setRotation(value); } + void setLineWidth(float lineWidth) { _lineWidth = lineWidth; } void setIsSolid(bool isSolid) { _isSolid = isSolid; } void setIsDashedLine(bool isDashedLine) { _isDashedLine = isDashedLine; } - void setRotation(const glm::quat& value) { _rotation = value; } void setIgnoreRayIntersection(bool value) { _ignoreRayIntersection = value; } void setDrawInFront(bool value) { _drawInFront = value; } void setDrawOnHUD(bool value) { _drawOnHUD = value; } - virtual AABox getBounds() const; + virtual AABox getBounds() const = 0; virtual void setProperties(const QScriptValue& properties); virtual QScriptValue getProperty(const QString& property); @@ -62,9 +66,9 @@ public: } protected: - glm::vec3 _position; + Transform _transform; + float _lineWidth; - glm::quat _rotation; bool _isSolid; bool _isDashedLine; bool _ignoreRayIntersection;