mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 16:41:02 +02:00
Fix cloning bug for BillboardOverlay.
This commit is contained in:
parent
173a79867c
commit
ed7fc07ab1
5 changed files with 49 additions and 15 deletions
|
@ -29,6 +29,7 @@ BillboardOverlay::BillboardOverlay() {
|
||||||
|
|
||||||
BillboardOverlay::BillboardOverlay(const BillboardOverlay* billboardOverlay) :
|
BillboardOverlay::BillboardOverlay(const BillboardOverlay* billboardOverlay) :
|
||||||
Planar3DOverlay(billboardOverlay),
|
Planar3DOverlay(billboardOverlay),
|
||||||
|
PanelAttachable(billboardOverlay),
|
||||||
_url(billboardOverlay->_url),
|
_url(billboardOverlay->_url),
|
||||||
_texture(billboardOverlay->_texture),
|
_texture(billboardOverlay->_texture),
|
||||||
_fromImage(billboardOverlay->_fromImage),
|
_fromImage(billboardOverlay->_fromImage),
|
||||||
|
|
33
interface/src/ui/overlays/PanelAttachable.cpp
Normal file
33
interface/src/ui/overlays/PanelAttachable.cpp
Normal 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();
|
||||||
|
}
|
|
@ -18,26 +18,19 @@
|
||||||
|
|
||||||
class PanelAttachable {
|
class PanelAttachable {
|
||||||
public:
|
public:
|
||||||
|
PanelAttachable();
|
||||||
|
PanelAttachable(const PanelAttachable* panelAttachable);
|
||||||
|
|
||||||
glm::vec3 getOffsetPosition() const { return _offsetPosition; }
|
glm::vec3 getOffsetPosition() const { return _offsetPosition; }
|
||||||
void setOffsetPosition(glm::vec3 position) { _offsetPosition = position; }
|
void setOffsetPosition(glm::vec3 position) { _offsetPosition = position; }
|
||||||
|
|
||||||
FloatingUIPanel* getAttachedPanel() const { return _attachedPanel; }
|
FloatingUIPanel* getAttachedPanel() const { return _attachedPanel; }
|
||||||
void setAttachedPanel(FloatingUIPanel* panel) { _attachedPanel = panel; }
|
void setAttachedPanel(FloatingUIPanel* panel) { _attachedPanel = panel; }
|
||||||
|
|
||||||
glm::vec3 getTranslatedPosition(glm::vec3 avatarPosition) {
|
glm::vec3 getTranslatedPosition(glm::vec3 avatarPosition) const;
|
||||||
if (getAttachedPanel()) {
|
|
||||||
glm::vec3 totalOffsetPosition =
|
|
||||||
getAttachedPanel()->getFacingRotation() * getOffsetPosition() +
|
|
||||||
getAttachedPanel()->getOffsetPosition();
|
|
||||||
|
|
||||||
return getAttachedPanel()->getOffsetRotation() * totalOffsetPosition +
|
|
||||||
avatarPosition;
|
|
||||||
}
|
|
||||||
return glm::vec3();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FloatingUIPanel* _attachedPanel = nullptr;
|
FloatingUIPanel* _attachedPanel;
|
||||||
glm::vec3 _offsetPosition = glm::vec3(0, 0, 0);
|
glm::vec3 _offsetPosition = glm::vec3(0, 0, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,15 @@
|
||||||
#include <GeometryUtil.h>
|
#include <GeometryUtil.h>
|
||||||
#include <RegisteredMetaTypes.h>
|
#include <RegisteredMetaTypes.h>
|
||||||
|
|
||||||
|
Planar3DOverlay::Planar3DOverlay() :
|
||||||
|
Base3DOverlay(),
|
||||||
|
_dimensions{1.0f, 1.0f}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Planar3DOverlay::Planar3DOverlay(const Planar3DOverlay* planar3DOverlay) :
|
Planar3DOverlay::Planar3DOverlay(const Planar3DOverlay* planar3DOverlay) :
|
||||||
Base3DOverlay(planar3DOverlay)
|
Base3DOverlay(planar3DOverlay),
|
||||||
|
_dimensions(planar3DOverlay->_dimensions)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Planar3DOverlay : public Base3DOverlay {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Planar3DOverlay() {}
|
Planar3DOverlay();
|
||||||
Planar3DOverlay(const Planar3DOverlay* planar3DOverlay);
|
Planar3DOverlay(const Planar3DOverlay* planar3DOverlay);
|
||||||
|
|
||||||
AABox getBounds() const;
|
AABox getBounds() const;
|
||||||
|
@ -32,7 +32,7 @@ public:
|
||||||
virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face);
|
virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
glm::vec2 _dimensions{1.0f, 1.0f};
|
glm::vec2 _dimensions;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue