Replace pos/rot by a transform in Base3DOverlay

Also keep getBounds a pure virtual methods
This commit is contained in:
Atlante45 2015-06-22 15:35:49 -07:00
parent c22f1aa7e1
commit 31a98c5b40
2 changed files with 16 additions and 24 deletions

View file

@ -16,15 +16,12 @@
#include "Application.h" #include "Application.h"
#include "Base3DOverlay.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 float DEFAULT_LINE_WIDTH = 1.0f;
const bool DEFAULT_IS_SOLID = false; const bool DEFAULT_IS_SOLID = false;
const bool DEFAULT_IS_DASHED_LINE = false; const bool DEFAULT_IS_DASHED_LINE = false;
Base3DOverlay::Base3DOverlay() : Base3DOverlay::Base3DOverlay() :
_position(DEFAULT_POSITION),
_lineWidth(DEFAULT_LINE_WIDTH), _lineWidth(DEFAULT_LINE_WIDTH),
_rotation(),
_isSolid(DEFAULT_IS_SOLID), _isSolid(DEFAULT_IS_SOLID),
_isDashedLine(DEFAULT_IS_DASHED_LINE), _isDashedLine(DEFAULT_IS_DASHED_LINE),
_ignoreRayIntersection(false), _ignoreRayIntersection(false),
@ -35,9 +32,8 @@ Base3DOverlay::Base3DOverlay() :
Base3DOverlay::Base3DOverlay(const Base3DOverlay* base3DOverlay) : Base3DOverlay::Base3DOverlay(const Base3DOverlay* base3DOverlay) :
Overlay(base3DOverlay), Overlay(base3DOverlay),
_position(base3DOverlay->_position), _transform(base3DOverlay->_transform),
_lineWidth(base3DOverlay->_lineWidth), _lineWidth(base3DOverlay->_lineWidth),
_rotation(base3DOverlay->_rotation),
_isSolid(base3DOverlay->_isSolid), _isSolid(base3DOverlay->_isSolid),
_isDashedLine(base3DOverlay->_isDashedLine), _isDashedLine(base3DOverlay->_isDashedLine),
_ignoreRayIntersection(base3DOverlay->_ignoreRayIntersection), _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) { void Base3DOverlay::setProperties(const QScriptValue& properties) {
Overlay::setProperties(properties); Overlay::setProperties(properties);
@ -151,13 +139,13 @@ void Base3DOverlay::setProperties(const QScriptValue& properties) {
QScriptValue Base3DOverlay::getProperty(const QString& property) { QScriptValue Base3DOverlay::getProperty(const QString& property) {
if (property == "position" || property == "start" || property == "p1" || property == "point") { if (property == "position" || property == "start" || property == "p1" || property == "point") {
return vec3toScriptValue(_scriptEngine, _position); return vec3toScriptValue(_scriptEngine, getPosition());
} }
if (property == "lineWidth") { if (property == "lineWidth") {
return _lineWidth; return _lineWidth;
} }
if (property == "rotation") { if (property == "rotation") {
return quatToScriptValue(_scriptEngine, _rotation); return quatToScriptValue(_scriptEngine, getRotation());
} }
if (property == "isSolid" || property == "isFilled" || property == "solid" || property == "filed") { if (property == "isSolid" || property == "isFilled" || property == "solid" || property == "filed") {
return _isSolid; return _isSolid;

View file

@ -15,6 +15,7 @@
#include <glm/gtc/quaternion.hpp> #include <glm/gtc/quaternion.hpp>
#include <BoxBase.h> #include <BoxBase.h>
#include <Transform.h>
#include "Overlay.h" #include "Overlay.h"
@ -24,32 +25,35 @@ class Base3DOverlay : public Overlay {
public: public:
Base3DOverlay(); Base3DOverlay();
Base3DOverlay(const Base3DOverlay* base3DOverlay); Base3DOverlay(const Base3DOverlay* base3DOverlay);
~Base3DOverlay();
// getters // getters
virtual bool is3D() const { return true; } virtual bool is3D() const { return true; }
const glm::vec3& getPosition() const { return _position; } const glm::vec3& getPosition() const { return _transform.getTranslation(); }
const glm::vec3& getCenter() const { return _position; } // TODO: consider implementing registration points in this class 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; } float getLineWidth() const { return _lineWidth; }
bool getIsSolid() const { return _isSolid; } bool getIsSolid() const { return _isSolid; }
bool getIsDashedLine() const { return _isDashedLine; } bool getIsDashedLine() const { return _isDashedLine; }
bool getIsSolidLine() const { return !_isDashedLine; } bool getIsSolidLine() const { return !_isDashedLine; }
const glm::quat& getRotation() const { return _rotation; }
bool getIgnoreRayIntersection() const { return _ignoreRayIntersection; } bool getIgnoreRayIntersection() const { return _ignoreRayIntersection; }
bool getDrawInFront() const { return _drawInFront; } bool getDrawInFront() const { return _drawInFront; }
bool getDrawOnHUD() const { return _drawOnHUD; } bool getDrawOnHUD() const { return _drawOnHUD; }
// setters // 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 setLineWidth(float lineWidth) { _lineWidth = lineWidth; }
void setIsSolid(bool isSolid) { _isSolid = isSolid; } void setIsSolid(bool isSolid) { _isSolid = isSolid; }
void setIsDashedLine(bool isDashedLine) { _isDashedLine = isDashedLine; } void setIsDashedLine(bool isDashedLine) { _isDashedLine = isDashedLine; }
void setRotation(const glm::quat& value) { _rotation = value; }
void setIgnoreRayIntersection(bool value) { _ignoreRayIntersection = value; } void setIgnoreRayIntersection(bool value) { _ignoreRayIntersection = value; }
void setDrawInFront(bool value) { _drawInFront = value; } void setDrawInFront(bool value) { _drawInFront = value; }
void setDrawOnHUD(bool value) { _drawOnHUD = value; } void setDrawOnHUD(bool value) { _drawOnHUD = value; }
virtual AABox getBounds() const; virtual AABox getBounds() const = 0;
virtual void setProperties(const QScriptValue& properties); virtual void setProperties(const QScriptValue& properties);
virtual QScriptValue getProperty(const QString& property); virtual QScriptValue getProperty(const QString& property);
@ -62,9 +66,9 @@ public:
} }
protected: protected:
glm::vec3 _position; Transform _transform;
float _lineWidth; float _lineWidth;
glm::quat _rotation;
bool _isSolid; bool _isSolid;
bool _isDashedLine; bool _isDashedLine;
bool _ignoreRayIntersection; bool _ignoreRayIntersection;