Fix cloning bug for BillboardOverlay.

This commit is contained in:
Zander Otavka 2015-07-15 14:08:09 -07:00
parent 173a79867c
commit ed7fc07ab1
5 changed files with 49 additions and 15 deletions

View file

@ -29,6 +29,7 @@ BillboardOverlay::BillboardOverlay() {
BillboardOverlay::BillboardOverlay(const BillboardOverlay* billboardOverlay) :
Planar3DOverlay(billboardOverlay),
PanelAttachable(billboardOverlay),
_url(billboardOverlay->_url),
_texture(billboardOverlay->_texture),
_fromImage(billboardOverlay->_fromImage),

View file

@ -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();
}

View file

@ -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);
};

View file

@ -14,8 +14,15 @@
#include <GeometryUtil.h>
#include <RegisteredMetaTypes.h>
Planar3DOverlay::Planar3DOverlay() :
Base3DOverlay(),
_dimensions{1.0f, 1.0f}
{
}
Planar3DOverlay::Planar3DOverlay(const Planar3DOverlay* planar3DOverlay) :
Base3DOverlay(planar3DOverlay)
Base3DOverlay(planar3DOverlay),
_dimensions(planar3DOverlay->_dimensions)
{
}

View file

@ -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;
};