mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 08:04:01 +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) :
|
||||
Planar3DOverlay(billboardOverlay),
|
||||
PanelAttachable(billboardOverlay),
|
||||
_url(billboardOverlay->_url),
|
||||
_texture(billboardOverlay->_texture),
|
||||
_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 {
|
||||
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);
|
||||
};
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue