From 709ad849338bb764a8909b91b20c403c629d68ca Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Wed, 5 Nov 2014 23:44:59 +0100 Subject: [PATCH 1/9] added clone functionality to Overlays: Overlays.cloneOverlay(OverlayID) --- interface/src/ui/overlays/Base3DOverlay.cpp | 11 +++++++++-- interface/src/ui/overlays/Base3DOverlay.h | 1 + interface/src/ui/overlays/BillboardOverlay.cpp | 14 ++++++++++++++ interface/src/ui/overlays/BillboardOverlay.h | 4 ++++ interface/src/ui/overlays/Circle3DOverlay.cpp | 13 ++++++++----- interface/src/ui/overlays/Circle3DOverlay.h | 4 ++++ interface/src/ui/overlays/Cube3DOverlay.cpp | 6 ++++++ interface/src/ui/overlays/Cube3DOverlay.h | 2 ++ interface/src/ui/overlays/ImageOverlay.cpp | 11 +++++++++++ interface/src/ui/overlays/ImageOverlay.h | 3 +++ interface/src/ui/overlays/Line3DOverlay.cpp | 11 +++++++++++ interface/src/ui/overlays/Line3DOverlay.h | 4 ++++ interface/src/ui/overlays/LocalModelsOverlay.cpp | 6 ++++++ interface/src/ui/overlays/LocalModelsOverlay.h | 2 ++ interface/src/ui/overlays/LocalVoxelsOverlay.cpp | 5 +++++ interface/src/ui/overlays/LocalVoxelsOverlay.h | 1 + interface/src/ui/overlays/ModelOverlay.cpp | 6 +++++- interface/src/ui/overlays/ModelOverlay.h | 2 ++ interface/src/ui/overlays/Overlay.cpp | 16 ++++++++++++++++ interface/src/ui/overlays/Overlay.h | 2 ++ interface/src/ui/overlays/Overlay2D.cpp | 5 +++++ interface/src/ui/overlays/Overlay2D.h | 1 + interface/src/ui/overlays/Overlays.cpp | 10 ++++++++++ interface/src/ui/overlays/Overlays.h | 3 +++ interface/src/ui/overlays/Planar3DOverlay.cpp | 4 ++++ interface/src/ui/overlays/Planar3DOverlay.h | 1 + interface/src/ui/overlays/Rectangle3DOverlay.cpp | 11 +++++------ interface/src/ui/overlays/Rectangle3DOverlay.h | 2 ++ interface/src/ui/overlays/Sphere3DOverlay.cpp | 6 ++++++ interface/src/ui/overlays/Sphere3DOverlay.h | 2 ++ interface/src/ui/overlays/Text3DOverlay.cpp | 8 ++++++++ interface/src/ui/overlays/Text3DOverlay.h | 3 +++ interface/src/ui/overlays/TextOverlay.cpp | 8 ++++++++ interface/src/ui/overlays/TextOverlay.h | 2 ++ interface/src/ui/overlays/Volume3DOverlay.cpp | 4 ++++ interface/src/ui/overlays/Volume3DOverlay.h | 1 + 36 files changed, 181 insertions(+), 14 deletions(-) diff --git a/interface/src/ui/overlays/Base3DOverlay.cpp b/interface/src/ui/overlays/Base3DOverlay.cpp index 89dd4d4b01..23634ac88c 100644 --- a/interface/src/ui/overlays/Base3DOverlay.cpp +++ b/interface/src/ui/overlays/Base3DOverlay.cpp @@ -155,5 +155,12 @@ void Base3DOverlay::drawDashedLine(const glm::vec3& start, const glm::vec3& end) } - - +void Base3DOverlay::writeToClone(Base3DOverlay* clone) { + Overlay::writeToClone(clone); + clone->setPosition(getPosition()); + clone->setLineWidth(getLineWidth()); + clone->setIsSolid(getIsSolid()); + clone->setIsDashedLine(getIsDashedLine()); + clone->setRotation(getRotation()); + clone->setIgnoreRayIntersection(getIgnoreRayIntersection()); +} diff --git a/interface/src/ui/overlays/Base3DOverlay.h b/interface/src/ui/overlays/Base3DOverlay.h index 75ce6b303d..430b235381 100644 --- a/interface/src/ui/overlays/Base3DOverlay.h +++ b/interface/src/ui/overlays/Base3DOverlay.h @@ -54,6 +54,7 @@ public: } protected: + virtual void writeToClone(Base3DOverlay* clone); void drawDashedLine(const glm::vec3& start, const glm::vec3& end); glm::vec3 _position; diff --git a/interface/src/ui/overlays/BillboardOverlay.cpp b/interface/src/ui/overlays/BillboardOverlay.cpp index c8d4877bb5..aec5e993dd 100644 --- a/interface/src/ui/overlays/BillboardOverlay.cpp +++ b/interface/src/ui/overlays/BillboardOverlay.cpp @@ -198,3 +198,17 @@ bool BillboardOverlay::findRayIntersection(const glm::vec3& origin, const glm::v return false; } +BillboardOverlay* BillboardOverlay::createClone() { + BillboardOverlay* clone = new BillboardOverlay(); + writeToClone(clone); + return clone; +} + +void BillboardOverlay::writeToClone(BillboardOverlay* clone) { + Base3DOverlay::writeToClone(clone); + clone->setScale(_scale); + clone->setIsFacingAvatar(_isFacingAvatar); + clone->setClipFromSource(_fromImage); + clone->_url = _url; + clone->_billboard = QByteArray::QByteArray(_billboard); +} diff --git a/interface/src/ui/overlays/BillboardOverlay.h b/interface/src/ui/overlays/BillboardOverlay.h index 018ca5f5cf..e71234c1c2 100644 --- a/interface/src/ui/overlays/BillboardOverlay.h +++ b/interface/src/ui/overlays/BillboardOverlay.h @@ -35,10 +35,14 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; + virtual BillboardOverlay* createClone(); + private slots: void replyFinished(); private: + virtual void writeToClone(BillboardOverlay* clone); + void setBillboardURL(const QString& url); QString _url; diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index 144119c450..1a025e5a6f 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -319,9 +319,12 @@ bool Circle3DOverlay::findRayIntersection(const glm::vec3& origin, return intersects; } +Circle3DOverlay* Circle3DOverlay::createClone() { + Circle3DOverlay* clone = new Circle3DOverlay(); + writeToClone(clone); + return clone; +} - - - - - +void Circle3DOverlay::writeToClone(Circle3DOverlay* clone) { + Planar3DOverlay::writeToClone(clone); +} diff --git a/interface/src/ui/overlays/Circle3DOverlay.h b/interface/src/ui/overlays/Circle3DOverlay.h index 191a0d3100..8437bb0850 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.h +++ b/interface/src/ui/overlays/Circle3DOverlay.h @@ -47,8 +47,12 @@ public: void setMinorTickMarksColor(const xColor& value) { _minorTickMarksColor = value; } virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; + + virtual Circle3DOverlay* createClone(); protected: + virtual void writeToClone(Circle3DOverlay* clone); + float _startAt; float _endAt; float _outerRadius; diff --git a/interface/src/ui/overlays/Cube3DOverlay.cpp b/interface/src/ui/overlays/Cube3DOverlay.cpp index 81a2dfd498..9bf3de90c0 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.cpp +++ b/interface/src/ui/overlays/Cube3DOverlay.cpp @@ -102,3 +102,9 @@ void Cube3DOverlay::render(RenderArgs* args) { delete glower; } } + +Cube3DOverlay* Cube3DOverlay::createClone() { + Cube3DOverlay* clone = new Cube3DOverlay(); + writeToClone(clone); + return clone; +} diff --git a/interface/src/ui/overlays/Cube3DOverlay.h b/interface/src/ui/overlays/Cube3DOverlay.h index 272d68bb5e..0b7b9e14a3 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.h +++ b/interface/src/ui/overlays/Cube3DOverlay.h @@ -20,6 +20,8 @@ public: Cube3DOverlay(); ~Cube3DOverlay(); virtual void render(RenderArgs* args); + + virtual Cube3DOverlay* createClone(); }; diff --git a/interface/src/ui/overlays/ImageOverlay.cpp b/interface/src/ui/overlays/ImageOverlay.cpp index 3b9d95af2e..04038834c2 100644 --- a/interface/src/ui/overlays/ImageOverlay.cpp +++ b/interface/src/ui/overlays/ImageOverlay.cpp @@ -151,4 +151,15 @@ void ImageOverlay::setProperties(const QScriptValue& properties) { } } +ImageOverlay* ImageOverlay::createClone() { + ImageOverlay* clone = new ImageOverlay(); + writeToClone(clone); + return clone; +} +void ImageOverlay::writeToClone(ImageOverlay* clone) { + Overlay2D::writeToClone(clone); + clone->_imageURL = _imageURL; + clone->_textureImage = _textureImage; + clone->_renderImage = _renderImage; +} diff --git a/interface/src/ui/overlays/ImageOverlay.h b/interface/src/ui/overlays/ImageOverlay.h index ef1ead8c02..a3b88893ae 100644 --- a/interface/src/ui/overlays/ImageOverlay.h +++ b/interface/src/ui/overlays/ImageOverlay.h @@ -45,10 +45,13 @@ public: void setImageURL(const QUrl& url); virtual void setProperties(const QScriptValue& properties); + virtual ImageOverlay* createClone(); + private slots: void replyFinished(); // we actually want to hide this... private: + virtual void writeToClone(ImageOverlay* clone); QUrl _imageURL; QImage _textureImage; diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index 18671ea074..4f40d07b5f 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -79,3 +79,14 @@ void Line3DOverlay::setProperties(const QScriptValue& properties) { } } } + +Line3DOverlay* Line3DOverlay::createClone() { + Line3DOverlay* clone = new Line3DOverlay(); + writeToClone(clone); + return clone; +} + + +void Line3DOverlay::writeToClone(Line3DOverlay* clone) { + Base3DOverlay::writeToClone(clone); +} diff --git a/interface/src/ui/overlays/Line3DOverlay.h b/interface/src/ui/overlays/Line3DOverlay.h index f9c4e0d6d6..ce7320ff80 100644 --- a/interface/src/ui/overlays/Line3DOverlay.h +++ b/interface/src/ui/overlays/Line3DOverlay.h @@ -29,7 +29,11 @@ public: virtual void setProperties(const QScriptValue& properties); + virtual Line3DOverlay* createClone(); + protected: + virtual void writeToClone(Line3DOverlay* clone); + glm::vec3 _end; }; diff --git a/interface/src/ui/overlays/LocalModelsOverlay.cpp b/interface/src/ui/overlays/LocalModelsOverlay.cpp index c1f16bf13e..7f1faf3a39 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.cpp +++ b/interface/src/ui/overlays/LocalModelsOverlay.cpp @@ -48,3 +48,9 @@ void LocalModelsOverlay::render(RenderArgs* args) { } } + +LocalModelsOverlay* LocalModelsOverlay::createClone() { + LocalModelsOverlay* clone = new LocalModelsOverlay(Application::getInstance()->getEntityClipboardRenderer()); + writeToClone(clone); + return clone; +} diff --git a/interface/src/ui/overlays/LocalModelsOverlay.h b/interface/src/ui/overlays/LocalModelsOverlay.h index 60f09b8666..0659de0ab1 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.h +++ b/interface/src/ui/overlays/LocalModelsOverlay.h @@ -25,6 +25,8 @@ public: virtual void update(float deltatime); virtual void render(RenderArgs* args); + virtual LocalModelsOverlay* createClone(); + private: EntityTreeRenderer* _entityTreeRenderer; }; diff --git a/interface/src/ui/overlays/LocalVoxelsOverlay.cpp b/interface/src/ui/overlays/LocalVoxelsOverlay.cpp index dcfc79f3b4..09b74916c3 100644 --- a/interface/src/ui/overlays/LocalVoxelsOverlay.cpp +++ b/interface/src/ui/overlays/LocalVoxelsOverlay.cpp @@ -103,3 +103,8 @@ void LocalVoxelsOverlay::setProperties(const QScriptValue &properties) { } } +LocalVoxelsOverlay* LocalVoxelsOverlay::createClone() { + LocalVoxelsOverlay* clone = new LocalVoxelsOverlay(); + writeToClone(clone); + return clone; +} diff --git a/interface/src/ui/overlays/LocalVoxelsOverlay.h b/interface/src/ui/overlays/LocalVoxelsOverlay.h index 46a88407af..9bd27e16bc 100644 --- a/interface/src/ui/overlays/LocalVoxelsOverlay.h +++ b/interface/src/ui/overlays/LocalVoxelsOverlay.h @@ -39,6 +39,7 @@ public: virtual void setProperties(const QScriptValue& properties); + virtual LocalVoxelsOverlay* createClone(); private: static QMap _voxelSystemMap; // treeName/voxelSystem diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 150d40f15a..dc7506cc9e 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -135,4 +135,8 @@ bool ModelOverlay::findRayIntersectionExtraInfo(const glm::vec3& origin, const g return _model.findRayIntersectionAgainstSubMeshes(origin, direction, distance, face, extraInfo); } - +ModelOverlay* ModelOverlay::createClone() { + ModelOverlay* clone = new ModelOverlay(); + writeToClone(clone); + return clone; +} diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h index 26471a79e1..43f9acc004 100644 --- a/interface/src/ui/overlays/ModelOverlay.h +++ b/interface/src/ui/overlays/ModelOverlay.h @@ -28,6 +28,8 @@ public: virtual bool findRayIntersectionExtraInfo(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, QString& extraInfo) const; + virtual ModelOverlay* createClone(); + private: Model _model; diff --git a/interface/src/ui/overlays/Overlay.cpp b/interface/src/ui/overlays/Overlay.cpp index 215119374e..1e4bce02d0 100644 --- a/interface/src/ui/overlays/Overlay.cpp +++ b/interface/src/ui/overlays/Overlay.cpp @@ -173,3 +173,19 @@ float Overlay::updatePulse() { return _pulse; } + +void Overlay::writeToClone(Overlay* clone) { + clone->setAlpha(getAlpha()); + clone->setAlphaPulse(getAlphaPulse()); + clone->setAnchor(getAnchor()); + clone->setColor(getColor()); + clone->setColorPulse(getColorPulse()); + clone->setGlowLevel(getGlowLevel()); + clone->setGlowLevelPulse(getGlowLevelPulse()); + clone->setPulseDirection(getPulseDirection()); + clone->setPulseMax(getPulseMax()); + clone->setPulseMin(getPulseMin()); + clone->setPulsePeriod(getPulsePeriod()); + clone->setVisible(getVisible()); + clone->_isLoaded = _isLoaded; +} diff --git a/interface/src/ui/overlays/Overlay.h b/interface/src/ui/overlays/Overlay.h index 81ddaf1a91..3a4322bd1d 100644 --- a/interface/src/ui/overlays/Overlay.h +++ b/interface/src/ui/overlays/Overlay.h @@ -77,8 +77,10 @@ public: void setAlphaPulse(float value) { _alphaPulse = value; } virtual void setProperties(const QScriptValue& properties); + virtual Overlay* createClone() = 0; protected: + virtual void writeToClone(Overlay* clone); float updatePulse(); QGLWidget* _parent; diff --git a/interface/src/ui/overlays/Overlay2D.cpp b/interface/src/ui/overlays/Overlay2D.cpp index 0bdb8790cc..f8ff2ad2fc 100644 --- a/interface/src/ui/overlays/Overlay2D.cpp +++ b/interface/src/ui/overlays/Overlay2D.cpp @@ -64,3 +64,8 @@ void Overlay2D::setProperties(const QScriptValue& properties) { //qDebug() << "set bounds to " << getBounds(); } } + +void Overlay2D::writeToClone(Overlay2D* clone) { + Overlay::writeToClone(clone); + clone->setBounds(getBounds()); +} diff --git a/interface/src/ui/overlays/Overlay2D.h b/interface/src/ui/overlays/Overlay2D.h index 283e7b7b23..49f22f1c4f 100644 --- a/interface/src/ui/overlays/Overlay2D.h +++ b/interface/src/ui/overlays/Overlay2D.h @@ -49,6 +49,7 @@ public: virtual void setProperties(const QScriptValue& properties); protected: + virtual void writeToClone(Overlay2D* clone); QRect _bounds; // where on the screen to draw }; diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index df7a5fbcea..85a28057a8 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -190,6 +190,16 @@ unsigned int Overlays::addOverlay(Overlay* overlay) { return thisID; } +unsigned int Overlays::cloneOverlay(unsigned int id) { + Overlay* thisOverlay = NULL; + if (_overlays2D.contains(id)) { + thisOverlay = _overlays2D[id]; + } else if (_overlays3D.contains(id)) { + thisOverlay = _overlays3D[id]; + } + return addOverlay(thisOverlay->createClone()); +} + bool Overlays::editOverlay(unsigned int id, const QScriptValue& properties) { Overlay* thisOverlay = NULL; QWriteLocker lock(&_lock); diff --git a/interface/src/ui/overlays/Overlays.h b/interface/src/ui/overlays/Overlays.h index 686b998267..c5db1dfc7e 100644 --- a/interface/src/ui/overlays/Overlays.h +++ b/interface/src/ui/overlays/Overlays.h @@ -49,6 +49,9 @@ public slots: /// adds an overlay that's already been created unsigned int addOverlay(Overlay* overlay); + /// clones an existing overlay + unsigned int cloneOverlay(unsigned int id); + /// edits an overlay updating only the included properties, will return the identified OverlayID in case of /// successful edit, if the input id is for an unknown overlay this function will have no effect bool editOverlay(unsigned int id, const QScriptValue& properties); diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index 91a3a023f7..d2222f9051 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -102,3 +102,7 @@ bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve } return intersects; } + +void Planar3DOverlay::writeToClone(Planar3DOverlay* clone) { + Base3DOverlay::writeToClone(clone); +} diff --git a/interface/src/ui/overlays/Planar3DOverlay.h b/interface/src/ui/overlays/Planar3DOverlay.h index ee4bb3e05a..a938d6a4e5 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.h +++ b/interface/src/ui/overlays/Planar3DOverlay.h @@ -40,6 +40,7 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; protected: + virtual void writeToClone(Planar3DOverlay* clone); glm::vec2 _dimensions; }; diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.cpp b/interface/src/ui/overlays/Rectangle3DOverlay.cpp index c131a139ac..728accfad6 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.cpp +++ b/interface/src/ui/overlays/Rectangle3DOverlay.cpp @@ -106,9 +106,8 @@ void Rectangle3DOverlay::setProperties(const QScriptValue &properties) { Planar3DOverlay::setProperties(properties); } - - - - - - +Rectangle3DOverlay* Rectangle3DOverlay::createClone() { + Rectangle3DOverlay* clone = new Rectangle3DOverlay(); + writeToClone(clone); + return clone; +} diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.h b/interface/src/ui/overlays/Rectangle3DOverlay.h index 9cec6da7e7..0bb805200c 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.h +++ b/interface/src/ui/overlays/Rectangle3DOverlay.h @@ -21,6 +21,8 @@ public: ~Rectangle3DOverlay(); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); + + virtual Rectangle3DOverlay* createClone(); }; diff --git a/interface/src/ui/overlays/Sphere3DOverlay.cpp b/interface/src/ui/overlays/Sphere3DOverlay.cpp index 63ed3e8d7e..ef4e2ba51b 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.cpp +++ b/interface/src/ui/overlays/Sphere3DOverlay.cpp @@ -70,3 +70,9 @@ void Sphere3DOverlay::render(RenderArgs* args) { } } + +Sphere3DOverlay* Sphere3DOverlay::createClone() { + Sphere3DOverlay* clone = new Sphere3DOverlay(); + writeToClone(clone); + return clone; +} diff --git a/interface/src/ui/overlays/Sphere3DOverlay.h b/interface/src/ui/overlays/Sphere3DOverlay.h index 98776a3f57..f9db6b99af 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.h +++ b/interface/src/ui/overlays/Sphere3DOverlay.h @@ -20,6 +20,8 @@ public: Sphere3DOverlay(); ~Sphere3DOverlay(); virtual void render(RenderArgs* args); + + virtual Sphere3DOverlay* createClone(); }; diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index d8febbf0eb..a19bd097a4 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -179,4 +179,12 @@ void Text3DOverlay::setProperties(const QScriptValue& properties) { } +Text3DOverlay* Text3DOverlay::createClone() { + Text3DOverlay* clone = new Text3DOverlay(); + writeToClone(clone); + return clone; +} +void Text3DOverlay::writeToClone(Text3DOverlay* clone) { + Planar3DOverlay::writeToClone(clone); +} diff --git a/interface/src/ui/overlays/Text3DOverlay.h b/interface/src/ui/overlays/Text3DOverlay.h index 45e311c554..00b7f0ebb6 100644 --- a/interface/src/ui/overlays/Text3DOverlay.h +++ b/interface/src/ui/overlays/Text3DOverlay.h @@ -48,7 +48,10 @@ public: virtual void setProperties(const QScriptValue& properties); + virtual Text3DOverlay* createClone(); + private: + virtual void writeToClone(Text3DOverlay* clone); void enableClipPlane(GLenum plane, float x, float y, float z, float w); QString _text; diff --git a/interface/src/ui/overlays/TextOverlay.cpp b/interface/src/ui/overlays/TextOverlay.cpp index 530b30a856..f09306c4fa 100644 --- a/interface/src/ui/overlays/TextOverlay.cpp +++ b/interface/src/ui/overlays/TextOverlay.cpp @@ -125,4 +125,12 @@ void TextOverlay::setProperties(const QScriptValue& properties) { } } +TextOverlay* TextOverlay::createClone() { + TextOverlay* clone = new TextOverlay(); + writeToClone(clone); + return clone; +} +void TextOverlay::writeToClone(TextOverlay* clone) { + Overlay2D::writeToClone(clone); +} diff --git a/interface/src/ui/overlays/TextOverlay.h b/interface/src/ui/overlays/TextOverlay.h index f7ff83e542..cb519e3ffc 100644 --- a/interface/src/ui/overlays/TextOverlay.h +++ b/interface/src/ui/overlays/TextOverlay.h @@ -52,8 +52,10 @@ public: void setFontSize(int fontSize) { _fontSize = fontSize; } virtual void setProperties(const QScriptValue& properties); + virtual TextOverlay* createClone(); private: + virtual void writeToClone(TextOverlay* clone); QString _text; xColor _backgroundColor; diff --git a/interface/src/ui/overlays/Volume3DOverlay.cpp b/interface/src/ui/overlays/Volume3DOverlay.cpp index cc12d41e2e..24696c8017 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.cpp +++ b/interface/src/ui/overlays/Volume3DOverlay.cpp @@ -108,3 +108,7 @@ bool Volume3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve } return false; } + +void Volume3DOverlay::writeToClone(Volume3DOverlay* clone) { + Base3DOverlay::writeToClone(clone); +} diff --git a/interface/src/ui/overlays/Volume3DOverlay.h b/interface/src/ui/overlays/Volume3DOverlay.h index 7cde169c30..94dd463bdf 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.h +++ b/interface/src/ui/overlays/Volume3DOverlay.h @@ -42,6 +42,7 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; protected: + virtual void writeToClone(Volume3DOverlay* clone); glm::vec3 _dimensions; }; From d3d80d3fe20759f2563b730ff9067bb9b259dce5 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 6 Nov 2014 00:34:59 +0100 Subject: [PATCH 2/9] filled in the rest of the properties --- interface/src/ui/overlays/Circle3DOverlay.cpp | 11 +++++++++++ interface/src/ui/overlays/ImageOverlay.cpp | 2 +- interface/src/ui/overlays/Line3DOverlay.cpp | 1 + interface/src/ui/overlays/ModelOverlay.cpp | 12 ++++++++++++ interface/src/ui/overlays/ModelOverlay.h | 3 ++- interface/src/ui/overlays/Planar3DOverlay.cpp | 1 + interface/src/ui/overlays/Text3DOverlay.cpp | 8 ++++++++ interface/src/ui/overlays/TextOverlay.cpp | 5 +++++ 8 files changed, 41 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index 1a025e5a6f..378c59a00e 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -327,4 +327,15 @@ Circle3DOverlay* Circle3DOverlay::createClone() { void Circle3DOverlay::writeToClone(Circle3DOverlay* clone) { Planar3DOverlay::writeToClone(clone); + clone->setStartAt(getStartAt()); + clone->setEndAt(getEndAt()); + clone->setOuterRadius(getOuterRadius()); + clone->setInnerRadius(getInnerRadius()); + clone->setHasTickMarks(getHasTickMarks()); + clone->setMajorTickMarksAngle(getMajorTickMarksAngle()); + clone->setMinorTickMarksAngle(getMinorTickMarksAngle()); + clone->setMajorTickMarksLength(getMajorTickMarksLength()); + clone->setMinorTickMarksLength(getMinorTickMarksLength()); + clone->setMajorTickMarksColor(getMajorTickMarksColor()); + clone->setMinorTickMarksColor(getMinorTickMarksColor()); } diff --git a/interface/src/ui/overlays/ImageOverlay.cpp b/interface/src/ui/overlays/ImageOverlay.cpp index 04038834c2..6c2b09018e 100644 --- a/interface/src/ui/overlays/ImageOverlay.cpp +++ b/interface/src/ui/overlays/ImageOverlay.cpp @@ -160,6 +160,6 @@ ImageOverlay* ImageOverlay::createClone() { void ImageOverlay::writeToClone(ImageOverlay* clone) { Overlay2D::writeToClone(clone); clone->_imageURL = _imageURL; - clone->_textureImage = _textureImage; + clone->_textureImage = QImage::QImage(_textureImage); clone->_renderImage = _renderImage; } diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index 4f40d07b5f..d4c48fbc3e 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -89,4 +89,5 @@ Line3DOverlay* Line3DOverlay::createClone() { void Line3DOverlay::writeToClone(Line3DOverlay* clone) { Base3DOverlay::writeToClone(clone); + clone->setEnd(getEnd()); } diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index dc7506cc9e..6d49bf3df9 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -140,3 +140,15 @@ ModelOverlay* ModelOverlay::createClone() { writeToClone(clone); return clone; } + +void ModelOverlay::writeToClone(ModelOverlay* clone) { + Base3DOverlay::writeToClone(clone); + clone->_url = _url; + if (clone->_url.isValid()) { + clone->_updateModel = true; + clone->_isLoaded = false; + } + clone->_rotation = _rotation; + clone->_scale = _scale; + clone->_updateModel = _updateModel; +} diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h index 43f9acc004..50b14a8ff7 100644 --- a/interface/src/ui/overlays/ModelOverlay.h +++ b/interface/src/ui/overlays/ModelOverlay.h @@ -31,7 +31,8 @@ public: virtual ModelOverlay* createClone(); private: - + virtual void writeToClone(ModelOverlay* clone); + Model _model; QUrl _url; diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index d2222f9051..e14d45773c 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -105,4 +105,5 @@ bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve void Planar3DOverlay::writeToClone(Planar3DOverlay* clone) { Base3DOverlay::writeToClone(clone); + clone->setDimensions(getDimensions()); } diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index a19bd097a4..9ab8e0f82d 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -187,4 +187,12 @@ Text3DOverlay* Text3DOverlay::createClone() { void Text3DOverlay::writeToClone(Text3DOverlay* clone) { Planar3DOverlay::writeToClone(clone); + clone->setText(getText()); + clone->setLineHeight(getLineHeight()); + clone->setLeftMargin(getLeftMargin()); + clone->setTopMargin(getTopMargin()); + clone->setRightMargin(getRightMargin()); + clone->setBottomMargin(getBottomMargin()); + clone->setIsFacingAvatar(getIsFacingAvatar()); + clone->_backgroundColor = getBackgroundColor(); } diff --git a/interface/src/ui/overlays/TextOverlay.cpp b/interface/src/ui/overlays/TextOverlay.cpp index f09306c4fa..29dc06ab64 100644 --- a/interface/src/ui/overlays/TextOverlay.cpp +++ b/interface/src/ui/overlays/TextOverlay.cpp @@ -133,4 +133,9 @@ TextOverlay* TextOverlay::createClone() { void TextOverlay::writeToClone(TextOverlay* clone) { Overlay2D::writeToClone(clone); + clone->_text = QString::QString(_text); + clone->_backgroundColor = _backgroundColor; + clone->_leftMargin = _leftMargin; + clone->_topMargin = _topMargin; + clone->_fontSize = _fontSize; } From 388332966d6a11b49f50fc996da8b07df3be0c74 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 13 Nov 2014 22:22:46 +0100 Subject: [PATCH 3/9] Added cloning methods to Grid3DOverlay Added example script for cloning overlays (TODO: SpriteBillboard fix cloning of in example) --- examples/clonedOverlaysExample.js | 278 ++++++++++++++++++++ interface/src/ui/overlays/Grid3DOverlay.cpp | 12 + interface/src/ui/overlays/Grid3DOverlay.h | 4 + 3 files changed, 294 insertions(+) create mode 100644 examples/clonedOverlaysExample.js diff --git a/examples/clonedOverlaysExample.js b/examples/clonedOverlaysExample.js new file mode 100644 index 0000000000..aacca939f6 --- /dev/null +++ b/examples/clonedOverlaysExample.js @@ -0,0 +1,278 @@ +// +// clonedOverlaysExample.js +// examples +// +// Created by Thijs Wenker on 11/13/14. +// Copyright 2014 High Fidelity, Inc. +// +// Demonstrates the use of the overlay cloning function. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +// Image source: https://openclipart.org/detail/447/christmas-tree-by-theresaknott (heavily edited by Maximillian Merlin) +const CHRISTMAS_TREE_SPRITES_URL = "http://test.thoys.nl/hifi/images/santa/christmas-tree.svg"; + +// Image source: http://opengameart.org/content/santa-claus (CC-BY 3.0) +const SANTA_SPRITES_URL = "http://test.thoys.nl/hifi/images/santa/Santa.png"; + +Array.prototype.contains = function(obj) { + var i = this.length; + while (i--) { + if (this[i] === obj) { + return true; + } + } + return false; +}; + +function getRandomPosAroundMyAvatar(radius) { + return {x: MyAvatar.position.x + Math.floor(Math.random() * radius * 2) - radius, y: MyAvatar.position.y, z: MyAvatar.position.z + Math.floor(Math.random() * radius * 2) - radius}; +} + +function SpriteBillboard(sprite_properties) { + var _this = this; + // set properties + this.overlay_properties = {}; + this.sprite_properties = sprite_properties; + this.edited_overlay_properties = []; + this.defaultFPS = 30; + this.currentSequence = ""; + this.sequenceIndex = 0; + this.sequenceFPS = 0; + this.sequenceStepToNext = false; + this.sequenceTimer = null; + this.prevSequenceIndex = -1; + this.sequenceX = 0; + this.sequenceY = 0; + + this.spriteSize = {x: 0, y: 0, width: 32, height: 64}; + + this.editedProperty = function(prop_name) { + if (!_this.edited_overlay_properties.contains(prop_name)) { + _this.edited_overlay_properties.push(prop_name); + } + }; + + // function definitions + this.getPosition = function() { + return _this.overlay_properties.position ? + _this.overlay_properties.position : {x: 0, y: 0, z: 0}; + }; + + this.setPosition = function(newPosition) { + this.overlay_properties.position = newPosition; + this.editedProperty("position"); + return _this; + }; + + this.setURL = function(url) { + this.overlay_properties.url = url; + this.editedProperty("url"); + return _this; + } + + this.setAlpha = function(alpha) { + this.overlay_properties.alpha = alpha; + this.editedProperty("alpha"); + return _this; + } + + this.setScale = function(scale) { + this.overlay_properties.scale = scale; + this.editedProperty("scale"); + return _this; + } + + this.setSpriteSize = function(spriteSize) { + this.overlay_properties.subImage = spriteSize; + this.editedProperty("subImage"); + return _this; + }; + + this.setSpriteXIndex = function(x_index) { + _this.sequenceX = x_index; + _this.overlay_properties.subImage.x = x_index * _this.overlay_properties.subImage.width; + _this.editedProperty("subImage"); + return _this; + } + + this.setSpriteYIndex = function(y_index) { + _this.sequenceY = y_index; + _this.overlay_properties.subImage.y = y_index * _this.overlay_properties.subImage.height; + _this.editedProperty("subImage"); + return _this; + } + + this.editOverlay = function(properties) { + for (var key in properties) { + _this.overlay_properties[attrname] = properties[key]; + _this.editedProperty(key); + } + return _this; + }; + + this.commitChanges = function() { + var changed_properties = {}; + for (var i = 0; i < _this.edited_overlay_properties.length; i++) { + var key = _this.edited_overlay_properties[i]; + changed_properties[key] = _this.overlay_properties[key]; + } + if (Object.keys(changed_properties).length === 0) { + return; + } + Overlays.editOverlay(_this.overlay, changed_properties); + _this.edited_overlay_properties = []; + }; + + this._renderFrame = function() { + var currentSequence = _this.sprite_properties.sequences[_this.currentSequence]; + var currentItem = currentSequence[_this.sequenceIndex]; + var indexChanged = _this.sequenceIndex != _this.prevSequenceIndex; + var canMoveToNext = true; + _this.prevSequenceIndex = _this.sequenceIndex; + if (indexChanged) { + if (currentItem.loop != undefined) { + _this.loopSequence = currentItem.loop; + } + if (currentItem.fps !== undefined && currentItem.fps != _this.sequenceFPS) { + _this.startSequenceTimerFPS(currentItem.fps); + } + if (currentItem.step_to_next !== undefined) { + _this.sequenceStepToNext = currentItem.step_to_next; + } + if (currentItem.x !== undefined) { + _this.setSpriteXIndex(currentItem.x); + } + if (currentItem.y !== undefined) { + _this.setSpriteYIndex(currentItem.y); + } + + if (_this.sequenceStepToNext) { + canMoveToNext = false; + } + } + _this.prevSequenceIndex = _this.sequenceIndex; + var nextIndex = (_this.sequenceIndex + 1) % currentSequence.length; + var nextItem = currentSequence[nextIndex]; + var nextX = nextItem.x != undefined ? nextItem.x : _this.sequenceX; + var nextY = nextItem.Y != undefined ? nextItem.Y : _this.sequenceY; + + if (_this.sequenceStepToNext && !indexChanged) { + var XMoveNext = true; + var YMoveNext = true; + if (Math.abs(nextX - _this.sequenceX) > 1) { + _this.setSpriteXIndex(_this.sequenceX + (nextX > _this.sequenceX ? 1 : -1)); + XMoveNext = Math.abs(nextX - _this.sequenceX) == 1; + } + if (Math.abs(nextY - _this.sequenceY) > 1) { + _this.setSpriteYIndex(_this.sequenceY + (nextY > _this.sequenceY ? 1 : -1)); + YMoveNext = Math.abs(nextY - _this.sequenceY) == 1; + } + canMoveToNext = XMoveNext && YMoveNext; + + } + if (canMoveToNext) { + _this.sequenceIndex = nextIndex; + } + _this.commitChanges(); + + }; + + this.clone = function() { + var clone = {}; + clone.prototype = this.prototype; + for (property in this) { + clone[property] = this[property]; + } + return clone; + }; + + this.startSequenceTimerFPS = function(fps) { + _this.sequenceFPS = fps; + if (_this.sequenceTimer != null) { + Script.clearInterval(_this.sequenceTimer); + } + _this.sequenceTimer = Script.setInterval(_this._renderFrame, 1000 / fps); + } + + this.start = function(sequenceName) { + this.currentSequence = sequenceName; + this.sequenceFPS = this.defaultFPS; + this.startSequenceTimerFPS(this.defaultFPS); + }; + + if (this.sprite_properties.url !== undefined) { + this.setURL(this.sprite_properties.url); + } + + if (this.sprite_properties.sprite_size !== undefined) { + this.setSpriteSize(this.sprite_properties.sprite_size); + } + + if (this.sprite_properties.scale !== undefined) { + this.setScale(this.sprite_properties.scale); + } + + if (this.sprite_properties.alpha !== undefined) { + this.setAlpha(this.sprite_properties.alpha); + } + + if (this.sprite_properties.position !== undefined) { + this.setPosition(this.sprite_properties.position); + } + + // set the overlay + this.overlay = Overlays.addOverlay("billboard", this.overlay_properties); + this.new_properties = {}; + + if (this.sprite_properties.startup_sequence != undefined) { + this.start(this.sprite_properties.startup_sequence); + } + + Script.scriptEnding.connect(function () { + if (_this.sequenceTimer != null) { + Script.clearInterval(_this.sequenceTimer); + } + Overlays.deleteOverlay(_this.overlay); + }); +} + +var chrismastree = new SpriteBillboard({ + position: getRandomPosAroundMyAvatar(6), + url: CHRISTMAS_TREE_SPRITES_URL, + sprite_size: {x: 0, y: 0, width: 250.000, height: 357.626}, + scale: 6, + alpha: 1, + sequences: {"idle": [{x: 0, y: 0, step_to_next: true, fps: 3}, {x: 3, step_to_next: false}]}, + startup_sequence: "idle" +}); + +var santa = new SpriteBillboard({ + position: getRandomPosAroundMyAvatar(6), + url: SANTA_SPRITES_URL, + loop: true, + sprite_size: {x: 0, y: 0, width: 64, height: 72}, + scale: 4, + alpha: 1, + sequences: { + "walk_left": [{x: 2, y: 0, step_to_next: true, fps: 4}, {x: 10, step_to_next: false}], + "walk_right": [{x: 10, y: 1, step_to_next: true, fps: 4}, {x: 2, step_to_next: false}], + }, + startup_sequence: "walk_left" +}); + +var santa = new SpriteBillboard({ + position: getRandomPosAroundMyAvatar(6), + url: SANTA_SPRITES_URL, + loop: true, + sprite_size: {x: 0, y: 0, width: 64, height: 72}, + scale: 4, + alpha: 1, + sequences: { + "walk_left": [{x: 2, y: 0, step_to_next: true, fps: 4}, {x: 10, step_to_next: false}], + "walk_right": [{x: 10, y: 1, step_to_next: true, fps: 4}, {x: 2, step_to_next: false}], + }, + startup_sequence: "walk_right" +}); \ No newline at end of file diff --git a/interface/src/ui/overlays/Grid3DOverlay.cpp b/interface/src/ui/overlays/Grid3DOverlay.cpp index c628199fe3..be99612a1a 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.cpp +++ b/interface/src/ui/overlays/Grid3DOverlay.cpp @@ -116,3 +116,15 @@ void Grid3DOverlay::setProperties(const QScriptValue& properties) { _majorGridEvery = properties.property("majorGridEvery").toVariant().toInt(); } } + +Grid3DOverlay* Grid3DOverlay::createClone() { + Grid3DOverlay* clone = new Grid3DOverlay(); + writeToClone(clone); + return clone; +} + +void Grid3DOverlay::writeToClone(Grid3DOverlay* clone) { + Base3DOverlay::writeToClone(clone); + clone->_minorGridWidth = _minorGridWidth; + clone->_majorGridEvery = _majorGridEvery; +} diff --git a/interface/src/ui/overlays/Grid3DOverlay.h b/interface/src/ui/overlays/Grid3DOverlay.h index b1675f15d7..319f298b2c 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.h +++ b/interface/src/ui/overlays/Grid3DOverlay.h @@ -34,7 +34,11 @@ public: virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); + virtual Grid3DOverlay* createClone(); + private: + virtual void writeToClone(Grid3DOverlay* clone); + float _minorGridWidth; int _majorGridEvery; From cbb3d463b697b958366dacb2f8100fd691aaaed9 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 13 Nov 2014 23:29:05 +0100 Subject: [PATCH 4/9] Fixed Overlays::isLoaded which did not to find my just created overlay. --- interface/src/ui/overlays/Overlays.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/interface/src/ui/overlays/Overlays.cpp b/interface/src/ui/overlays/Overlays.cpp index 6702c88125..00b16cf5b7 100644 --- a/interface/src/ui/overlays/Overlays.cpp +++ b/interface/src/ui/overlays/Overlays.cpp @@ -359,14 +359,14 @@ void RayToOverlayIntersectionResultFromScriptValue(const QScriptValue& object, R bool Overlays::isLoaded(unsigned int id) { QReadLocker lock(&_lock); - Overlay* overlay = _overlays2D.value(id); - if (!overlay) { - _overlays3D.value(id); - } - if (!overlay) { + Overlay* thisOverlay = NULL; + if (_overlays2D.contains(id)) { + thisOverlay = _overlays2D[id]; + } else if (_overlays3D.contains(id)) { + thisOverlay = _overlays3D[id]; + } else { return false; // not found } - - return overlay->isLoaded(); + return thisOverlay->isLoaded(); } From e964741e30d6ab49e39b003a1443f627733a924f Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 14 Nov 2014 00:01:51 +0100 Subject: [PATCH 5/9] added OverlayPreloader and made a bunch of clones --- examples/clonedOverlaysExample.js | 204 ++++++++++++++++-------------- 1 file changed, 110 insertions(+), 94 deletions(-) diff --git a/examples/clonedOverlaysExample.js b/examples/clonedOverlaysExample.js index aacca939f6..7aea048175 100644 --- a/examples/clonedOverlaysExample.js +++ b/examples/clonedOverlaysExample.js @@ -11,6 +11,9 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +const NUM_OF_TREES = 40; +const NUM_OF_SANTAS = 20; + // Image source: https://openclipart.org/detail/447/christmas-tree-by-theresaknott (heavily edited by Maximillian Merlin) const CHRISTMAS_TREE_SPRITES_URL = "http://test.thoys.nl/hifi/images/santa/christmas-tree.svg"; @@ -27,13 +30,31 @@ Array.prototype.contains = function(obj) { return false; }; -function getRandomPosAroundMyAvatar(radius) { - return {x: MyAvatar.position.x + Math.floor(Math.random() * radius * 2) - radius, y: MyAvatar.position.y, z: MyAvatar.position.z + Math.floor(Math.random() * radius * 2) - radius}; +function getRandomPosAroundMyAvatar(radius, height_offset) { + if (height_offset == undefined) { + height_offset = 0; + } + return {x: MyAvatar.position.x + Math.floor(Math.random() * radius * 2) - radius, y: MyAvatar.position.y + height_offset, z: MyAvatar.position.z + Math.floor(Math.random() * radius * 2) - radius}; } -function SpriteBillboard(sprite_properties) { +function OverlayPreloader(overlay_type, overlay_properties, loaded_callback) { var _this = this; + this.loaded_callback = loaded_callback; + this.overlay = Overlays.addOverlay(overlay_type, overlay_properties); + this.timer = null; + this.timer = Script.setInterval(function() { + if (Overlays.isLoaded(_this.overlay)) { + Script.clearInterval(_this.timer); + _this.loaded_callback(); + } + }, 100); +} + +function SpriteBillboard(sprite_properties, overlay) { + var _this = this; + // set properties + this.overlay = overlay; this.overlay_properties = {}; this.sprite_properties = sprite_properties; this.edited_overlay_properties = []; @@ -41,11 +62,11 @@ function SpriteBillboard(sprite_properties) { this.currentSequence = ""; this.sequenceIndex = 0; this.sequenceFPS = 0; - this.sequenceStepToNext = false; + this.sequenceStepToNext = false; this.sequenceTimer = null; this.prevSequenceIndex = -1; - this.sequenceX = 0; - this.sequenceY = 0; + this.sequenceX = 0; + this.sequenceY = 0; this.spriteSize = {x: 0, y: 0, width: 32, height: 64}; @@ -67,12 +88,6 @@ function SpriteBillboard(sprite_properties) { return _this; }; - this.setURL = function(url) { - this.overlay_properties.url = url; - this.editedProperty("url"); - return _this; - } - this.setAlpha = function(alpha) { this.overlay_properties.alpha = alpha; this.editedProperty("alpha"); @@ -92,14 +107,14 @@ function SpriteBillboard(sprite_properties) { }; this.setSpriteXIndex = function(x_index) { - _this.sequenceX = x_index; + _this.sequenceX = x_index; _this.overlay_properties.subImage.x = x_index * _this.overlay_properties.subImage.width; _this.editedProperty("subImage"); return _this; } this.setSpriteYIndex = function(y_index) { - _this.sequenceY = y_index; + _this.sequenceY = y_index; _this.overlay_properties.subImage.y = y_index * _this.overlay_properties.subImage.height; _this.editedProperty("subImage"); return _this; @@ -107,8 +122,8 @@ function SpriteBillboard(sprite_properties) { this.editOverlay = function(properties) { for (var key in properties) { - _this.overlay_properties[attrname] = properties[key]; - _this.editedProperty(key); + _this.overlay_properties[attrname] = properties[key]; + _this.editedProperty(key); } return _this; }; @@ -119,9 +134,9 @@ function SpriteBillboard(sprite_properties) { var key = _this.edited_overlay_properties[i]; changed_properties[key] = _this.overlay_properties[key]; } - if (Object.keys(changed_properties).length === 0) { - return; - } + if (Object.keys(changed_properties).length === 0) { + return; + } Overlays.editOverlay(_this.overlay, changed_properties); _this.edited_overlay_properties = []; }; @@ -129,9 +144,9 @@ function SpriteBillboard(sprite_properties) { this._renderFrame = function() { var currentSequence = _this.sprite_properties.sequences[_this.currentSequence]; var currentItem = currentSequence[_this.sequenceIndex]; - var indexChanged = _this.sequenceIndex != _this.prevSequenceIndex; - var canMoveToNext = true; - _this.prevSequenceIndex = _this.sequenceIndex; + var indexChanged = _this.sequenceIndex != _this.prevSequenceIndex; + var canMoveToNext = true; + _this.prevSequenceIndex = _this.sequenceIndex; if (indexChanged) { if (currentItem.loop != undefined) { _this.loopSequence = currentItem.loop; @@ -139,45 +154,44 @@ function SpriteBillboard(sprite_properties) { if (currentItem.fps !== undefined && currentItem.fps != _this.sequenceFPS) { _this.startSequenceTimerFPS(currentItem.fps); } - if (currentItem.step_to_next !== undefined) { - _this.sequenceStepToNext = currentItem.step_to_next; - } - if (currentItem.x !== undefined) { - _this.setSpriteXIndex(currentItem.x); - } - if (currentItem.y !== undefined) { - _this.setSpriteYIndex(currentItem.y); - } - - if (_this.sequenceStepToNext) { - canMoveToNext = false; - } + if (currentItem.step_to_next !== undefined) { + _this.sequenceStepToNext = currentItem.step_to_next; + } + if (currentItem.x !== undefined) { + _this.setSpriteXIndex(currentItem.x); + } + if (currentItem.y !== undefined) { + _this.setSpriteYIndex(currentItem.y); + } + + if (_this.sequenceStepToNext) { + canMoveToNext = false; + } } - _this.prevSequenceIndex = _this.sequenceIndex; + _this.prevSequenceIndex = _this.sequenceIndex; var nextIndex = (_this.sequenceIndex + 1) % currentSequence.length; var nextItem = currentSequence[nextIndex]; - var nextX = nextItem.x != undefined ? nextItem.x : _this.sequenceX; - var nextY = nextItem.Y != undefined ? nextItem.Y : _this.sequenceY; - - if (_this.sequenceStepToNext && !indexChanged) { - var XMoveNext = true; - var YMoveNext = true; - if (Math.abs(nextX - _this.sequenceX) > 1) { - _this.setSpriteXIndex(_this.sequenceX + (nextX > _this.sequenceX ? 1 : -1)); - XMoveNext = Math.abs(nextX - _this.sequenceX) == 1; + var nextX = nextItem.x != undefined ? nextItem.x : _this.sequenceX; + var nextY = nextItem.Y != undefined ? nextItem.Y : _this.sequenceY; + + if (_this.sequenceStepToNext && !indexChanged) { + var XMoveNext = true; + var YMoveNext = true; + if (Math.abs(nextX - _this.sequenceX) > 1) { + _this.setSpriteXIndex(_this.sequenceX + (nextX > _this.sequenceX ? 1 : -1)); + XMoveNext = Math.abs(nextX - _this.sequenceX) == 1; } - if (Math.abs(nextY - _this.sequenceY) > 1) { - _this.setSpriteYIndex(_this.sequenceY + (nextY > _this.sequenceY ? 1 : -1)); - YMoveNext = Math.abs(nextY - _this.sequenceY) == 1; + if (Math.abs(nextY - _this.sequenceY) > 1) { + _this.setSpriteYIndex(_this.sequenceY + (nextY > _this.sequenceY ? 1 : -1)); + YMoveNext = Math.abs(nextY - _this.sequenceY) == 1; } - canMoveToNext = XMoveNext && YMoveNext; - - } - if (canMoveToNext) { + canMoveToNext = XMoveNext && YMoveNext; + } + if (canMoveToNext) { _this.sequenceIndex = nextIndex; - } - _this.commitChanges(); - + } + _this.commitChanges(); + }; this.clone = function() { @@ -223,14 +237,12 @@ function SpriteBillboard(sprite_properties) { this.setPosition(this.sprite_properties.position); } - // set the overlay - this.overlay = Overlays.addOverlay("billboard", this.overlay_properties); - this.new_properties = {}; + _this.commitChanges(); if (this.sprite_properties.startup_sequence != undefined) { this.start(this.sprite_properties.startup_sequence); } - + Script.scriptEnding.connect(function () { if (_this.sequenceTimer != null) { Script.clearInterval(_this.sequenceTimer); @@ -239,40 +251,44 @@ function SpriteBillboard(sprite_properties) { }); } -var chrismastree = new SpriteBillboard({ - position: getRandomPosAroundMyAvatar(6), - url: CHRISTMAS_TREE_SPRITES_URL, - sprite_size: {x: 0, y: 0, width: 250.000, height: 357.626}, - scale: 6, - alpha: 1, - sequences: {"idle": [{x: 0, y: 0, step_to_next: true, fps: 3}, {x: 3, step_to_next: false}]}, - startup_sequence: "idle" -}); +var christmastree_loader = null; +christmastree_loader = new OverlayPreloader("billboard", + {url: CHRISTMAS_TREE_SPRITES_URL, alpha: 0}, function() { + for (var i = 0; i < NUM_OF_TREES; i++) { + var clonedOverlay = Overlays.cloneOverlay(christmastree_loader.overlay); + new SpriteBillboard({ + position: getRandomPosAroundMyAvatar(20), + sprite_size: {x: 0, y: 0, width: 250.000, height: 357.626}, + scale: 6, + alpha: 1, + sequences: {"idle": [{x: 0, y: 0, step_to_next: true, fps: 3}, {x: 3, step_to_next: false}]}, + startup_sequence: "idle" + }, clonedOverlay); + } + } +); -var santa = new SpriteBillboard({ - position: getRandomPosAroundMyAvatar(6), - url: SANTA_SPRITES_URL, - loop: true, - sprite_size: {x: 0, y: 0, width: 64, height: 72}, - scale: 4, - alpha: 1, - sequences: { - "walk_left": [{x: 2, y: 0, step_to_next: true, fps: 4}, {x: 10, step_to_next: false}], - "walk_right": [{x: 10, y: 1, step_to_next: true, fps: 4}, {x: 2, step_to_next: false}], - }, - startup_sequence: "walk_left" -}); +var santa_loader = null; +santa_loader = new OverlayPreloader("billboard", + {url: SANTA_SPRITES_URL, alpha: 0}, function() { + for (var i = 0; i < NUM_OF_SANTAS; i++) { + var clonedOverlay = Overlays.cloneOverlay(santa_loader.overlay); + new SpriteBillboard({ + position: getRandomPosAroundMyAvatar(18, -1), + sprite_size: {x: 0, y: 0, width: 64, height: 72}, + scale: 4, + alpha: 1, + sequences: { + "walk_left": [{x: 2, y: 0, step_to_next: true, fps: 4}, {x: 10, step_to_next: false}], + "walk_right": [{x: 10, y: 1, step_to_next: true, fps: 4}, {x: 2, step_to_next: false}], + }, + startup_sequence: (i % 2 == 0) ? "walk_left" : "walk_right" + }, clonedOverlay); + } + } +); -var santa = new SpriteBillboard({ - position: getRandomPosAroundMyAvatar(6), - url: SANTA_SPRITES_URL, - loop: true, - sprite_size: {x: 0, y: 0, width: 64, height: 72}, - scale: 4, - alpha: 1, - sequences: { - "walk_left": [{x: 2, y: 0, step_to_next: true, fps: 4}, {x: 10, step_to_next: false}], - "walk_right": [{x: 10, y: 1, step_to_next: true, fps: 4}, {x: 2, step_to_next: false}], - }, - startup_sequence: "walk_right" -}); \ No newline at end of file +Script.scriptEnding.connect(function () { + Overlays.deleteOverlay(christmastree_loader.overlay); + Overlays.deleteOverlay(santa_loader.overlay); +}); From 76ae60c5caaa5cd8ddfa9c5bd972bedeaadb937e Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 14 Nov 2014 19:27:27 +0100 Subject: [PATCH 6/9] fix Ubuntu build --- interface/src/ui/overlays/TextOverlay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/ui/overlays/TextOverlay.cpp b/interface/src/ui/overlays/TextOverlay.cpp index 70d82ec28e..19f85aed68 100644 --- a/interface/src/ui/overlays/TextOverlay.cpp +++ b/interface/src/ui/overlays/TextOverlay.cpp @@ -133,7 +133,7 @@ TextOverlay* TextOverlay::createClone() { void TextOverlay::writeToClone(TextOverlay* clone) { Overlay2D::writeToClone(clone); - clone->_text = QString::QString(_text); + clone->_text = _text; clone->_backgroundColor = _backgroundColor; clone->_leftMargin = _leftMargin; clone->_topMargin = _topMargin; From fa03a7eb0cac1991c3d9172364ecba18ef2570a5 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 14 Nov 2014 19:53:56 +0100 Subject: [PATCH 7/9] fix ubuntu build --- interface/src/ui/overlays/BillboardOverlay.cpp | 2 +- interface/src/ui/overlays/ImageOverlay.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/src/ui/overlays/BillboardOverlay.cpp b/interface/src/ui/overlays/BillboardOverlay.cpp index aec5e993dd..f1d991d5cb 100644 --- a/interface/src/ui/overlays/BillboardOverlay.cpp +++ b/interface/src/ui/overlays/BillboardOverlay.cpp @@ -210,5 +210,5 @@ void BillboardOverlay::writeToClone(BillboardOverlay* clone) { clone->setIsFacingAvatar(_isFacingAvatar); clone->setClipFromSource(_fromImage); clone->_url = _url; - clone->_billboard = QByteArray::QByteArray(_billboard); + clone->_billboard = _billboard; } diff --git a/interface/src/ui/overlays/ImageOverlay.cpp b/interface/src/ui/overlays/ImageOverlay.cpp index 6c2b09018e..04038834c2 100644 --- a/interface/src/ui/overlays/ImageOverlay.cpp +++ b/interface/src/ui/overlays/ImageOverlay.cpp @@ -160,6 +160,6 @@ ImageOverlay* ImageOverlay::createClone() { void ImageOverlay::writeToClone(ImageOverlay* clone) { Overlay2D::writeToClone(clone); clone->_imageURL = _imageURL; - clone->_textureImage = QImage::QImage(_textureImage); + clone->_textureImage = _textureImage; clone->_renderImage = _renderImage; } From ba5491bc8b3233559b2ee944610e63fbb460ae32 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Fri, 14 Nov 2014 22:55:25 +0100 Subject: [PATCH 8/9] moved writeToClone to copy constructor --- interface/src/ui/overlays/Base3DOverlay.cpp | 22 ++++++------ interface/src/ui/overlays/Base3DOverlay.h | 3 +- .../src/ui/overlays/BillboardOverlay.cpp | 24 ++++++------- interface/src/ui/overlays/BillboardOverlay.h | 5 ++- interface/src/ui/overlays/Circle3DOverlay.cpp | 35 +++++++++--------- interface/src/ui/overlays/Circle3DOverlay.h | 3 +- interface/src/ui/overlays/Cube3DOverlay.cpp | 9 +++-- interface/src/ui/overlays/Cube3DOverlay.h | 1 + interface/src/ui/overlays/Grid3DOverlay.cpp | 17 +++++---- interface/src/ui/overlays/Grid3DOverlay.h | 3 +- interface/src/ui/overlays/ImageOverlay.cpp | 23 ++++++------ interface/src/ui/overlays/ImageOverlay.h | 2 +- interface/src/ui/overlays/Line3DOverlay.cpp | 16 ++++----- interface/src/ui/overlays/Line3DOverlay.h | 3 +- .../src/ui/overlays/LocalModelsOverlay.cpp | 11 ++++-- .../src/ui/overlays/LocalModelsOverlay.h | 1 + .../src/ui/overlays/LocalVoxelsOverlay.cpp | 10 ++++-- .../src/ui/overlays/LocalVoxelsOverlay.h | 1 + interface/src/ui/overlays/ModelOverlay.cpp | 32 +++++++++-------- interface/src/ui/overlays/ModelOverlay.h | 4 +-- interface/src/ui/overlays/Overlay.cpp | 36 ++++++++++--------- interface/src/ui/overlays/Overlay.h | 2 +- interface/src/ui/overlays/Overlay2D.cpp | 12 +++---- interface/src/ui/overlays/Overlay2D.h | 4 +-- interface/src/ui/overlays/Planar3DOverlay.cpp | 11 +++--- interface/src/ui/overlays/Planar3DOverlay.h | 2 +- .../src/ui/overlays/Rectangle3DOverlay.cpp | 9 +++-- .../src/ui/overlays/Rectangle3DOverlay.h | 1 + interface/src/ui/overlays/Sphere3DOverlay.cpp | 9 +++-- interface/src/ui/overlays/Sphere3DOverlay.h | 1 + interface/src/ui/overlays/Text3DOverlay.cpp | 30 ++++++++-------- interface/src/ui/overlays/Text3DOverlay.h | 2 +- interface/src/ui/overlays/TextOverlay.cpp | 24 ++++++------- interface/src/ui/overlays/TextOverlay.h | 3 +- interface/src/ui/overlays/Volume3DOverlay.cpp | 10 +++--- interface/src/ui/overlays/Volume3DOverlay.h | 2 +- 36 files changed, 201 insertions(+), 182 deletions(-) diff --git a/interface/src/ui/overlays/Base3DOverlay.cpp b/interface/src/ui/overlays/Base3DOverlay.cpp index aae2acf61e..7ed7079795 100644 --- a/interface/src/ui/overlays/Base3DOverlay.cpp +++ b/interface/src/ui/overlays/Base3DOverlay.cpp @@ -31,6 +31,17 @@ Base3DOverlay::Base3DOverlay() : { } +Base3DOverlay::Base3DOverlay(Base3DOverlay* base3DOverlay) : + Overlay(base3DOverlay), + _position(base3DOverlay->_position), + _lineWidth(base3DOverlay->_lineWidth), + _rotation(base3DOverlay->_rotation), + _isSolid(base3DOverlay->_isSolid), + _isDashedLine(base3DOverlay->_isDashedLine), + _ignoreRayIntersection(base3DOverlay->_ignoreRayIntersection) +{ +} + Base3DOverlay::~Base3DOverlay() { } @@ -178,15 +189,4 @@ void Base3DOverlay::drawDashedLine(const glm::vec3& start, const glm::vec3& end) glVertex3f(end.x, end.y, end.z); glEnd(); - -} - -void Base3DOverlay::writeToClone(Base3DOverlay* clone) { - Overlay::writeToClone(clone); - clone->setPosition(getPosition()); - clone->setLineWidth(getLineWidth()); - clone->setIsSolid(getIsSolid()); - clone->setIsDashedLine(getIsDashedLine()); - clone->setRotation(getRotation()); - clone->setIgnoreRayIntersection(getIgnoreRayIntersection()); } diff --git a/interface/src/ui/overlays/Base3DOverlay.h b/interface/src/ui/overlays/Base3DOverlay.h index f4032f2015..4422203566 100644 --- a/interface/src/ui/overlays/Base3DOverlay.h +++ b/interface/src/ui/overlays/Base3DOverlay.h @@ -23,6 +23,7 @@ class Base3DOverlay : public Overlay { public: Base3DOverlay(); + Base3DOverlay(Base3DOverlay* base3DOverlay); ~Base3DOverlay(); // getters @@ -55,7 +56,6 @@ public: } protected: - virtual void writeToClone(Base3DOverlay* clone); void drawDashedLine(const glm::vec3& start, const glm::vec3& end); glm::vec3 _position; @@ -65,6 +65,5 @@ protected: bool _isDashedLine; bool _ignoreRayIntersection; }; - #endif // hifi_Base3DOverlay_h diff --git a/interface/src/ui/overlays/BillboardOverlay.cpp b/interface/src/ui/overlays/BillboardOverlay.cpp index b570576380..87c8f8bb74 100644 --- a/interface/src/ui/overlays/BillboardOverlay.cpp +++ b/interface/src/ui/overlays/BillboardOverlay.cpp @@ -24,6 +24,17 @@ BillboardOverlay::BillboardOverlay() : _isLoaded = false; } +BillboardOverlay::BillboardOverlay(BillboardOverlay* billboardOverlay) : + Base3DOverlay(billboardOverlay), + _newTextureNeeded(true), + _scale(billboardOverlay->_scale), + _isFacingAvatar(billboardOverlay->_isFacingAvatar), + _fromImage(billboardOverlay->_fromImage), + _url(billboardOverlay->_url), + _billboard(billboardOverlay->_billboard) +{ +} + void BillboardOverlay::render(RenderArgs* args) { if (!_visible || !_isLoaded) { return; @@ -216,16 +227,5 @@ bool BillboardOverlay::findRayIntersection(const glm::vec3& origin, const glm::v } BillboardOverlay* BillboardOverlay::createClone() { - BillboardOverlay* clone = new BillboardOverlay(); - writeToClone(clone); - return clone; -} - -void BillboardOverlay::writeToClone(BillboardOverlay* clone) { - Base3DOverlay::writeToClone(clone); - clone->setScale(_scale); - clone->setIsFacingAvatar(_isFacingAvatar); - clone->setClipFromSource(_fromImage); - clone->_url = _url; - clone->_billboard = _billboard; + return new BillboardOverlay(this); } diff --git a/interface/src/ui/overlays/BillboardOverlay.h b/interface/src/ui/overlays/BillboardOverlay.h index e967aba408..e8c25c8549 100644 --- a/interface/src/ui/overlays/BillboardOverlay.h +++ b/interface/src/ui/overlays/BillboardOverlay.h @@ -22,7 +22,8 @@ class BillboardOverlay : public Base3DOverlay { Q_OBJECT public: BillboardOverlay(); - + BillboardOverlay(BillboardOverlay* billboardOverlay); + virtual void render(RenderArgs* args); // setters @@ -42,8 +43,6 @@ private slots: void replyFinished(); private: - virtual void writeToClone(BillboardOverlay* clone); - void setBillboardURL(const QString& url); QString _url; diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index 1258ee56c5..6c0c82f3ec 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -33,6 +33,22 @@ Circle3DOverlay::Circle3DOverlay() : _minorTickMarksColor.red = _minorTickMarksColor.green = _minorTickMarksColor.blue = (unsigned char)0; } +Circle3DOverlay::Circle3DOverlay(Circle3DOverlay* circle3DOverlay) : + Planar3DOverlay(circle3DOverlay), + _startAt(circle3DOverlay->_startAt), + _endAt(circle3DOverlay->_endAt), + _outerRadius(circle3DOverlay->_outerRadius), + _innerRadius(circle3DOverlay->_innerRadius), + _hasTickMarks(circle3DOverlay->_hasTickMarks), + _majorTickMarksAngle(circle3DOverlay->_majorTickMarksAngle), + _minorTickMarksAngle(circle3DOverlay->_minorTickMarksAngle), + _majorTickMarksLength(circle3DOverlay->_majorTickMarksLength), + _minorTickMarksLength(circle3DOverlay->_minorTickMarksLength), + _majorTickMarksColor(circle3DOverlay->_majorTickMarksColor), + _minorTickMarksColor(circle3DOverlay->_minorTickMarksColor) +{ +} + Circle3DOverlay::~Circle3DOverlay() { } @@ -359,22 +375,5 @@ bool Circle3DOverlay::findRayIntersection(const glm::vec3& origin, } Circle3DOverlay* Circle3DOverlay::createClone() { - Circle3DOverlay* clone = new Circle3DOverlay(); - writeToClone(clone); - return clone; -} - -void Circle3DOverlay::writeToClone(Circle3DOverlay* clone) { - Planar3DOverlay::writeToClone(clone); - clone->setStartAt(getStartAt()); - clone->setEndAt(getEndAt()); - clone->setOuterRadius(getOuterRadius()); - clone->setInnerRadius(getInnerRadius()); - clone->setHasTickMarks(getHasTickMarks()); - clone->setMajorTickMarksAngle(getMajorTickMarksAngle()); - clone->setMinorTickMarksAngle(getMinorTickMarksAngle()); - clone->setMajorTickMarksLength(getMajorTickMarksLength()); - clone->setMinorTickMarksLength(getMinorTickMarksLength()); - clone->setMajorTickMarksColor(getMajorTickMarksColor()); - clone->setMinorTickMarksColor(getMinorTickMarksColor()); + return new Circle3DOverlay(this); } diff --git a/interface/src/ui/overlays/Circle3DOverlay.h b/interface/src/ui/overlays/Circle3DOverlay.h index 85bda28d46..cf9fc8e2fc 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.h +++ b/interface/src/ui/overlays/Circle3DOverlay.h @@ -18,6 +18,7 @@ class Circle3DOverlay : public Planar3DOverlay { public: Circle3DOverlay(); + Circle3DOverlay(Circle3DOverlay* circle3DOverlay); ~Circle3DOverlay(); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); @@ -52,8 +53,6 @@ public: virtual Circle3DOverlay* createClone(); protected: - virtual void writeToClone(Circle3DOverlay* clone); - float _startAt; float _endAt; float _outerRadius; diff --git a/interface/src/ui/overlays/Cube3DOverlay.cpp b/interface/src/ui/overlays/Cube3DOverlay.cpp index 9bf3de90c0..2aa4d29f23 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.cpp +++ b/interface/src/ui/overlays/Cube3DOverlay.cpp @@ -22,6 +22,11 @@ Cube3DOverlay::Cube3DOverlay() { } +Cube3DOverlay::Cube3DOverlay(Cube3DOverlay* cube3DOverlay) : + Volume3DOverlay(cube3DOverlay) +{ +} + Cube3DOverlay::~Cube3DOverlay() { } @@ -104,7 +109,5 @@ void Cube3DOverlay::render(RenderArgs* args) { } Cube3DOverlay* Cube3DOverlay::createClone() { - Cube3DOverlay* clone = new Cube3DOverlay(); - writeToClone(clone); - return clone; + return new Cube3DOverlay(this); } diff --git a/interface/src/ui/overlays/Cube3DOverlay.h b/interface/src/ui/overlays/Cube3DOverlay.h index 0b7b9e14a3..4fe137b73c 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.h +++ b/interface/src/ui/overlays/Cube3DOverlay.h @@ -18,6 +18,7 @@ class Cube3DOverlay : public Volume3DOverlay { public: Cube3DOverlay(); + Cube3DOverlay(Cube3DOverlay* cube3DOverlay); ~Cube3DOverlay(); virtual void render(RenderArgs* args); diff --git a/interface/src/ui/overlays/Grid3DOverlay.cpp b/interface/src/ui/overlays/Grid3DOverlay.cpp index 62ba5d1e78..601413226a 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.cpp +++ b/interface/src/ui/overlays/Grid3DOverlay.cpp @@ -20,6 +20,13 @@ Grid3DOverlay::Grid3DOverlay() : Base3DOverlay(), _majorGridEvery(5) { } +Grid3DOverlay::Grid3DOverlay(Grid3DOverlay* grid3DOverlay) : + Base3DOverlay(grid3DOverlay), + _minorGridWidth(grid3DOverlay->_minorGridWidth), + _majorGridEvery(grid3DOverlay->_majorGridEvery) +{ +} + Grid3DOverlay::~Grid3DOverlay() { } @@ -129,13 +136,5 @@ QScriptValue Grid3DOverlay::getProperty(const QString& property) { } Grid3DOverlay* Grid3DOverlay::createClone() { - Grid3DOverlay* clone = new Grid3DOverlay(); - writeToClone(clone); - return clone; -} - -void Grid3DOverlay::writeToClone(Grid3DOverlay* clone) { - Base3DOverlay::writeToClone(clone); - clone->_minorGridWidth = _minorGridWidth; - clone->_majorGridEvery = _majorGridEvery; + return new Grid3DOverlay(this); } diff --git a/interface/src/ui/overlays/Grid3DOverlay.h b/interface/src/ui/overlays/Grid3DOverlay.h index 1a1841cd96..28dfbf9de7 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.h +++ b/interface/src/ui/overlays/Grid3DOverlay.h @@ -29,6 +29,7 @@ class Grid3DOverlay : public Base3DOverlay { public: Grid3DOverlay(); + Grid3DOverlay(Grid3DOverlay* grid3DOverlay); ~Grid3DOverlay(); virtual void render(RenderArgs* args); @@ -38,8 +39,6 @@ public: virtual Grid3DOverlay* createClone(); private: - virtual void writeToClone(Grid3DOverlay* clone); - float _minorGridWidth; int _majorGridEvery; diff --git a/interface/src/ui/overlays/ImageOverlay.cpp b/interface/src/ui/overlays/ImageOverlay.cpp index 7c6d576698..dd06ee4da2 100644 --- a/interface/src/ui/overlays/ImageOverlay.cpp +++ b/interface/src/ui/overlays/ImageOverlay.cpp @@ -27,6 +27,17 @@ ImageOverlay::ImageOverlay() : _isLoaded = false; } +ImageOverlay::ImageOverlay(ImageOverlay* imageOverlay) : + Overlay2D(imageOverlay), + _textureID(0), + _textureBound(false), + _wantClipFromImage(false), + _renderImage(imageOverlay->_renderImage), + _imageURL(imageOverlay->_imageURL), + _textureImage(imageOverlay->_textureImage) +{ +} + ImageOverlay::~ImageOverlay() { if (_parent && _textureID) { // do we need to call this? @@ -162,15 +173,5 @@ QScriptValue ImageOverlay::getProperty(const QString& property) { return Overlay2D::getProperty(property); } ImageOverlay* ImageOverlay::createClone() { - ImageOverlay* clone = new ImageOverlay(); - writeToClone(clone); - return clone; + return new ImageOverlay(this); } - -void ImageOverlay::writeToClone(ImageOverlay* clone) { - Overlay2D::writeToClone(clone); - clone->_imageURL = _imageURL; - clone->_textureImage = _textureImage; - clone->_renderImage = _renderImage; -} - diff --git a/interface/src/ui/overlays/ImageOverlay.h b/interface/src/ui/overlays/ImageOverlay.h index 54f50dad2d..9c8d48a2e2 100644 --- a/interface/src/ui/overlays/ImageOverlay.h +++ b/interface/src/ui/overlays/ImageOverlay.h @@ -33,6 +33,7 @@ class ImageOverlay : public Overlay2D { public: ImageOverlay(); + ImageOverlay(ImageOverlay* imageOverlay); ~ImageOverlay(); virtual void render(RenderArgs* args); @@ -52,7 +53,6 @@ private slots: void replyFinished(); // we actually want to hide this... private: - virtual void writeToClone(ImageOverlay* clone); QUrl _imageURL; QImage _textureImage; diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index 7ecc7eb1f8..aac773f08f 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -18,6 +18,12 @@ Line3DOverlay::Line3DOverlay() { } +Line3DOverlay::Line3DOverlay(Line3DOverlay* line3DOverlay) : + Base3DOverlay(line3DOverlay), + _end(line3DOverlay->_end) +{ +} + Line3DOverlay::~Line3DOverlay() { } @@ -89,13 +95,5 @@ QScriptValue Line3DOverlay::getProperty(const QString& property) { } Line3DOverlay* Line3DOverlay::createClone() { - Line3DOverlay* clone = new Line3DOverlay(); - writeToClone(clone); - return clone; + return new Line3DOverlay(this); } - -void Line3DOverlay::writeToClone(Line3DOverlay* clone) { - Base3DOverlay::writeToClone(clone); - clone->setEnd(getEnd()); -} - diff --git a/interface/src/ui/overlays/Line3DOverlay.h b/interface/src/ui/overlays/Line3DOverlay.h index 5d7d9cbe3a..3d481438b9 100644 --- a/interface/src/ui/overlays/Line3DOverlay.h +++ b/interface/src/ui/overlays/Line3DOverlay.h @@ -18,6 +18,7 @@ class Line3DOverlay : public Base3DOverlay { public: Line3DOverlay(); + Line3DOverlay(Line3DOverlay* line3DOverlay); ~Line3DOverlay(); virtual void render(RenderArgs* args); @@ -33,8 +34,6 @@ public: virtual Line3DOverlay* createClone(); protected: - virtual void writeToClone(Line3DOverlay* clone); - glm::vec3 _end; }; diff --git a/interface/src/ui/overlays/LocalModelsOverlay.cpp b/interface/src/ui/overlays/LocalModelsOverlay.cpp index 7f1faf3a39..25cb0ead64 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.cpp +++ b/interface/src/ui/overlays/LocalModelsOverlay.cpp @@ -18,6 +18,13 @@ LocalModelsOverlay::LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer) : _entityTreeRenderer(entityTreeRenderer) { } +LocalModelsOverlay::LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer, LocalModelsOverlay* localModelsOverlay) : + Volume3DOverlay(localModelsOverlay), + _entityTreeRenderer(entityTreeRenderer) +{ + +} + LocalModelsOverlay::~LocalModelsOverlay() { } @@ -50,7 +57,5 @@ void LocalModelsOverlay::render(RenderArgs* args) { } LocalModelsOverlay* LocalModelsOverlay::createClone() { - LocalModelsOverlay* clone = new LocalModelsOverlay(Application::getInstance()->getEntityClipboardRenderer()); - writeToClone(clone); - return clone; + return new LocalModelsOverlay(Application::getInstance()->getEntityClipboardRenderer(), this); } diff --git a/interface/src/ui/overlays/LocalModelsOverlay.h b/interface/src/ui/overlays/LocalModelsOverlay.h index 0659de0ab1..c38bc6b2a3 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.h +++ b/interface/src/ui/overlays/LocalModelsOverlay.h @@ -20,6 +20,7 @@ class LocalModelsOverlay : public Volume3DOverlay { Q_OBJECT public: LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer); + LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer, LocalModelsOverlay* localModelsOverlay); ~LocalModelsOverlay(); virtual void update(float deltatime); diff --git a/interface/src/ui/overlays/LocalVoxelsOverlay.cpp b/interface/src/ui/overlays/LocalVoxelsOverlay.cpp index eab833aea3..4c44fe6dd8 100644 --- a/interface/src/ui/overlays/LocalVoxelsOverlay.cpp +++ b/interface/src/ui/overlays/LocalVoxelsOverlay.cpp @@ -28,6 +28,12 @@ LocalVoxelsOverlay::LocalVoxelsOverlay() : { } +LocalVoxelsOverlay::LocalVoxelsOverlay(LocalVoxelsOverlay* localVoxelsOverlay) : + Volume3DOverlay(localVoxelsOverlay), + _voxelCount(localVoxelsOverlay->_voxelCount) +{ +} + LocalVoxelsOverlay::~LocalVoxelsOverlay() { _voxelSystem->changeTree(new VoxelTree()); _voxelSystem.clear(); @@ -104,9 +110,7 @@ void LocalVoxelsOverlay::setProperties(const QScriptValue &properties) { } LocalVoxelsOverlay* LocalVoxelsOverlay::createClone() { - LocalVoxelsOverlay* clone = new LocalVoxelsOverlay(); - writeToClone(clone); - return clone; + return new LocalVoxelsOverlay(this); } QScriptValue LocalVoxelsOverlay::getProperty(const QString& property) { diff --git a/interface/src/ui/overlays/LocalVoxelsOverlay.h b/interface/src/ui/overlays/LocalVoxelsOverlay.h index 5c75c13db7..3e5bbbc5b6 100644 --- a/interface/src/ui/overlays/LocalVoxelsOverlay.h +++ b/interface/src/ui/overlays/LocalVoxelsOverlay.h @@ -32,6 +32,7 @@ class LocalVoxelsOverlay : public Volume3DOverlay { Q_OBJECT public: LocalVoxelsOverlay(); + LocalVoxelsOverlay(LocalVoxelsOverlay* localVoxelsOverlay); ~LocalVoxelsOverlay(); virtual void update(float deltatime); diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index 9edb744b41..f1c588f45d 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -22,6 +22,22 @@ ModelOverlay::ModelOverlay() _isLoaded = false; } +ModelOverlay::ModelOverlay(ModelOverlay* modelOverlay) : + Base3DOverlay(modelOverlay), + _model(), + _modelTextures(QVariantMap()), + _scale(modelOverlay->_scale), + _updateModel(false), + _url(modelOverlay->_url), + _rotation(modelOverlay->_rotation) +{ + _model.init(); + if (_url.isValid()) { + _updateModel = true; + _isLoaded = false; + } +} + void ModelOverlay::update(float deltatime) { if (_updateModel) { _updateModel = false; @@ -167,19 +183,5 @@ bool ModelOverlay::findRayIntersectionExtraInfo(const glm::vec3& origin, const g } ModelOverlay* ModelOverlay::createClone() { - ModelOverlay* clone = new ModelOverlay(); - writeToClone(clone); - return clone; -} - -void ModelOverlay::writeToClone(ModelOverlay* clone) { - Base3DOverlay::writeToClone(clone); - clone->_url = _url; - if (clone->_url.isValid()) { - clone->_updateModel = true; - clone->_isLoaded = false; - } - clone->_rotation = _rotation; - clone->_scale = _scale; - clone->_updateModel = _updateModel; + return new ModelOverlay(this); } diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h index 9c59a1ddd8..393e09c78b 100644 --- a/interface/src/ui/overlays/ModelOverlay.h +++ b/interface/src/ui/overlays/ModelOverlay.h @@ -20,7 +20,8 @@ class ModelOverlay : public Base3DOverlay { Q_OBJECT public: ModelOverlay(); - + ModelOverlay(ModelOverlay* modelOverlay); + virtual void update(float deltatime); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); @@ -32,7 +33,6 @@ public: virtual ModelOverlay* createClone(); private: - virtual void writeToClone(ModelOverlay* clone); Model _model; QVariantMap _modelTextures; diff --git a/interface/src/ui/overlays/Overlay.cpp b/interface/src/ui/overlays/Overlay.cpp index 8544eacc39..e67c1572f1 100644 --- a/interface/src/ui/overlays/Overlay.cpp +++ b/interface/src/ui/overlays/Overlay.cpp @@ -39,12 +39,30 @@ Overlay::Overlay() : { } +Overlay::Overlay(Overlay* overlay) : + _parent(NULL), + _alpha(overlay->_alpha), + _lastPulseUpdate(usecTimestampNow()), + _alphaPulse(overlay->_alphaPulse), + _anchor(overlay->_anchor), + _color(overlay->_color), + _colorPulse(overlay->_colorPulse), + _glowLevel(overlay->_glowLevel), + _glowLevelPulse(overlay->_glowLevelPulse), + _pulseDirection(overlay->_pulseDirection), + _pulseMax(overlay->_pulseMax), + _pulseMin(overlay->_pulseMin), + _pulsePeriod(overlay->_pulsePeriod), + _visible(overlay->_visible), + _isLoaded(overlay->_isLoaded) +{ +} + void Overlay::init(QGLWidget* parent, QScriptEngine* scriptEngine) { _parent = parent; _scriptEngine = scriptEngine; } - Overlay::~Overlay() { } @@ -212,19 +230,3 @@ float Overlay::updatePulse() { return _pulse; } - -void Overlay::writeToClone(Overlay* clone) { - clone->setAlpha(getAlpha()); - clone->setAlphaPulse(getAlphaPulse()); - clone->setAnchor(getAnchor()); - clone->setColor(getColor()); - clone->setColorPulse(getColorPulse()); - clone->setGlowLevel(getGlowLevel()); - clone->setGlowLevelPulse(getGlowLevelPulse()); - clone->setPulseDirection(getPulseDirection()); - clone->setPulseMax(getPulseMax()); - clone->setPulseMin(getPulseMin()); - clone->setPulsePeriod(getPulsePeriod()); - clone->setVisible(getVisible()); - clone->_isLoaded = _isLoaded; -} diff --git a/interface/src/ui/overlays/Overlay.h b/interface/src/ui/overlays/Overlay.h index 0efd7174b4..341a7b56a3 100644 --- a/interface/src/ui/overlays/Overlay.h +++ b/interface/src/ui/overlays/Overlay.h @@ -36,6 +36,7 @@ public: }; Overlay(); + Overlay(Overlay* overlay); ~Overlay(); void init(QGLWidget* parent, QScriptEngine* scriptEngine); virtual void update(float deltatime) {} @@ -82,7 +83,6 @@ public: virtual QScriptValue getProperty(const QString& property); protected: - virtual void writeToClone(Overlay* clone); float updatePulse(); QGLWidget* _parent; diff --git a/interface/src/ui/overlays/Overlay2D.cpp b/interface/src/ui/overlays/Overlay2D.cpp index ccbecb31a2..53ef9cdf29 100644 --- a/interface/src/ui/overlays/Overlay2D.cpp +++ b/interface/src/ui/overlays/Overlay2D.cpp @@ -22,6 +22,12 @@ Overlay2D::Overlay2D() { } +Overlay2D::Overlay2D(Overlay2D* overlay2D) : + Overlay(overlay2D), + _bounds(overlay2D->_bounds) +{ +} + Overlay2D::~Overlay2D() { } @@ -84,9 +90,3 @@ QScriptValue Overlay2D::getProperty(const QString& property) { return Overlay::getProperty(property); } - -void Overlay2D::writeToClone(Overlay2D* clone) { - Overlay::writeToClone(clone); - clone->setBounds(getBounds()); -} - diff --git a/interface/src/ui/overlays/Overlay2D.h b/interface/src/ui/overlays/Overlay2D.h index 31b1bd351e..ea3936c2c7 100644 --- a/interface/src/ui/overlays/Overlay2D.h +++ b/interface/src/ui/overlays/Overlay2D.h @@ -28,6 +28,7 @@ class Overlay2D : public Overlay { public: Overlay2D(); + Overlay2D(Overlay2D* overlay2D); ~Overlay2D(); virtual bool is3D() const { return false; } @@ -43,14 +44,13 @@ public: void setX(int x) { _bounds.setX(x); } void setY(int y) { _bounds.setY(y); } void setWidth(int width) { _bounds.setWidth(width); } - void setHeight(int height) { _bounds.setHeight(height); } + void setHeight(int height) { _bounds.setHeight(height); } void setBounds(const QRect& bounds) { _bounds = bounds; } virtual void setProperties(const QScriptValue& properties); virtual QScriptValue getProperty(const QString& property); protected: - virtual void writeToClone(Overlay2D* clone); QRect _bounds; // where on the screen to draw }; diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index 08c765c5ee..390b92948c 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -26,6 +26,12 @@ Planar3DOverlay::Planar3DOverlay() : { } +Planar3DOverlay::Planar3DOverlay(Planar3DOverlay* planar3DOverlay) : + Base3DOverlay(planar3DOverlay), + _dimensions(planar3DOverlay->_dimensions) +{ +} + Planar3DOverlay::~Planar3DOverlay() { } @@ -110,8 +116,3 @@ bool Planar3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve } return intersects; } - -void Planar3DOverlay::writeToClone(Planar3DOverlay* clone) { - Base3DOverlay::writeToClone(clone); - clone->setDimensions(getDimensions()); -} diff --git a/interface/src/ui/overlays/Planar3DOverlay.h b/interface/src/ui/overlays/Planar3DOverlay.h index 2f6c4a561b..7de68e24b2 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.h +++ b/interface/src/ui/overlays/Planar3DOverlay.h @@ -26,6 +26,7 @@ class Planar3DOverlay : public Base3DOverlay { public: Planar3DOverlay(); + Planar3DOverlay(Planar3DOverlay* planar3DOverlay); ~Planar3DOverlay(); // getters @@ -41,7 +42,6 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; protected: - virtual void writeToClone(Planar3DOverlay* clone); glm::vec2 _dimensions; }; diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.cpp b/interface/src/ui/overlays/Rectangle3DOverlay.cpp index 728accfad6..a2043d77c1 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.cpp +++ b/interface/src/ui/overlays/Rectangle3DOverlay.cpp @@ -20,6 +20,11 @@ Rectangle3DOverlay::Rectangle3DOverlay() { } +Rectangle3DOverlay::Rectangle3DOverlay(Rectangle3DOverlay* rectangle3DOverlay) : + Planar3DOverlay(rectangle3DOverlay) +{ +} + Rectangle3DOverlay::~Rectangle3DOverlay() { } @@ -107,7 +112,5 @@ void Rectangle3DOverlay::setProperties(const QScriptValue &properties) { } Rectangle3DOverlay* Rectangle3DOverlay::createClone() { - Rectangle3DOverlay* clone = new Rectangle3DOverlay(); - writeToClone(clone); - return clone; + return new Rectangle3DOverlay(this); } diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.h b/interface/src/ui/overlays/Rectangle3DOverlay.h index 0bb805200c..98e04324b4 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.h +++ b/interface/src/ui/overlays/Rectangle3DOverlay.h @@ -18,6 +18,7 @@ class Rectangle3DOverlay : public Planar3DOverlay { public: Rectangle3DOverlay(); + Rectangle3DOverlay(Rectangle3DOverlay* rectangle3DOverlay); ~Rectangle3DOverlay(); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); diff --git a/interface/src/ui/overlays/Sphere3DOverlay.cpp b/interface/src/ui/overlays/Sphere3DOverlay.cpp index ef4e2ba51b..30bb7d1c52 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.cpp +++ b/interface/src/ui/overlays/Sphere3DOverlay.cpp @@ -21,6 +21,11 @@ Sphere3DOverlay::Sphere3DOverlay() { } +Sphere3DOverlay::Sphere3DOverlay(Sphere3DOverlay* Sphere3DOverlay) : + Volume3DOverlay(Sphere3DOverlay) +{ +} + Sphere3DOverlay::~Sphere3DOverlay() { } @@ -72,7 +77,5 @@ void Sphere3DOverlay::render(RenderArgs* args) { } Sphere3DOverlay* Sphere3DOverlay::createClone() { - Sphere3DOverlay* clone = new Sphere3DOverlay(); - writeToClone(clone); - return clone; + return new Sphere3DOverlay(this); } diff --git a/interface/src/ui/overlays/Sphere3DOverlay.h b/interface/src/ui/overlays/Sphere3DOverlay.h index f9db6b99af..2f63c4fe48 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.h +++ b/interface/src/ui/overlays/Sphere3DOverlay.h @@ -18,6 +18,7 @@ class Sphere3DOverlay : public Volume3DOverlay { public: Sphere3DOverlay(); + Sphere3DOverlay(Sphere3DOverlay* Sphere3DOverlay); ~Sphere3DOverlay(); virtual void render(RenderArgs* args); diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index 9af96cad7e..0a83ec80f5 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -31,6 +31,19 @@ Text3DOverlay::Text3DOverlay() : { } +Text3DOverlay::Text3DOverlay(Text3DOverlay* text3DOverlay) : + Planar3DOverlay(text3DOverlay), + _text(text3DOverlay->_text), + _backgroundColor(text3DOverlay->_backgroundColor), + _lineHeight(text3DOverlay->_lineHeight), + _leftMargin(text3DOverlay->_leftMargin), + _topMargin(text3DOverlay->_topMargin), + _rightMargin(text3DOverlay->_rightMargin), + _bottomMargin(text3DOverlay->_bottomMargin), + _isFacingAvatar(text3DOverlay->_isFacingAvatar) +{ +} + Text3DOverlay::~Text3DOverlay() { } @@ -172,7 +185,6 @@ void Text3DOverlay::setProperties(const QScriptValue& properties) { setBottomMargin(properties.property("bottomMargin").toVariant().toFloat()); } - QScriptValue isFacingAvatarValue = properties.property("isFacingAvatar"); if (isFacingAvatarValue.isValid()) { _isFacingAvatar = isFacingAvatarValue.toVariant().toBool(); @@ -207,10 +219,9 @@ QScriptValue Text3DOverlay::getProperty(const QString& property) { } return Planar3DOverlay::getProperty(property); } + Text3DOverlay* Text3DOverlay::createClone() { - Text3DOverlay* clone = new Text3DOverlay(); - writeToClone(clone); - return clone; + return new Text3DOverlay(this);; } float Text3DOverlay::textWidth(const QString& text) const { @@ -220,15 +231,4 @@ float Text3DOverlay::textWidth(const QString& text) const { return scaleFactor * (float)fontMetrics.width(qPrintable(text)); } -void Text3DOverlay::writeToClone(Text3DOverlay* clone) { - Planar3DOverlay::writeToClone(clone); - clone->setText(getText()); - clone->setLineHeight(getLineHeight()); - clone->setLeftMargin(getLeftMargin()); - clone->setTopMargin(getTopMargin()); - clone->setRightMargin(getRightMargin()); - clone->setBottomMargin(getBottomMargin()); - clone->setIsFacingAvatar(getIsFacingAvatar()); - clone->_backgroundColor = getBackgroundColor(); -} diff --git a/interface/src/ui/overlays/Text3DOverlay.h b/interface/src/ui/overlays/Text3DOverlay.h index a72efe7564..c459b2eb36 100644 --- a/interface/src/ui/overlays/Text3DOverlay.h +++ b/interface/src/ui/overlays/Text3DOverlay.h @@ -24,6 +24,7 @@ class Text3DOverlay : public Planar3DOverlay { public: Text3DOverlay(); + Text3DOverlay(Text3DOverlay* text3DOverlay); ~Text3DOverlay(); virtual void render(RenderArgs* args); @@ -54,7 +55,6 @@ public: virtual Text3DOverlay* createClone(); private: - virtual void writeToClone(Text3DOverlay* clone); void enableClipPlane(GLenum plane, float x, float y, float z, float w); QString _text; diff --git a/interface/src/ui/overlays/TextOverlay.cpp b/interface/src/ui/overlays/TextOverlay.cpp index 2d98cfc243..368a604c9a 100644 --- a/interface/src/ui/overlays/TextOverlay.cpp +++ b/interface/src/ui/overlays/TextOverlay.cpp @@ -25,6 +25,16 @@ TextOverlay::TextOverlay() : { } +TextOverlay::TextOverlay(TextOverlay* textOverlay) : + Overlay2D(textOverlay), + _text(textOverlay->_text), + _backgroundColor(textOverlay->_backgroundColor), + _leftMargin(textOverlay->_leftMargin), + _topMargin(textOverlay->_topMargin), + _fontSize(textOverlay->_fontSize) +{ +} + TextOverlay::~TextOverlay() { } @@ -125,9 +135,7 @@ void TextOverlay::setProperties(const QScriptValue& properties) { } TextOverlay* TextOverlay::createClone() { - TextOverlay* clone = new TextOverlay(); - writeToClone(clone); - return clone; + return new TextOverlay(this);; } QScriptValue TextOverlay::getProperty(const QString& property) { @@ -152,18 +160,8 @@ QScriptValue TextOverlay::getProperty(const QString& property) { return Overlay2D::getProperty(property); } -void TextOverlay::writeToClone(TextOverlay* clone) { - Overlay2D::writeToClone(clone); - clone->_text = _text; - clone->_backgroundColor = _backgroundColor; - clone->_leftMargin = _leftMargin; - clone->_topMargin = _topMargin; - clone->_fontSize = _fontSize; -} - float TextOverlay::textWidth(const QString& text) const { QFont font(SANS_FONT_FAMILY, _fontSize, DEFAULT_FONT_WEIGHT); // Same font properties as render() QFontMetrics fontMetrics(font); return fontMetrics.width(qPrintable(text)); } - diff --git a/interface/src/ui/overlays/TextOverlay.h b/interface/src/ui/overlays/TextOverlay.h index 30c91d02a3..adfd9bde17 100644 --- a/interface/src/ui/overlays/TextOverlay.h +++ b/interface/src/ui/overlays/TextOverlay.h @@ -37,6 +37,7 @@ class TextOverlay : public Overlay2D { public: TextOverlay(); + TextOverlay(TextOverlay* textOverlay); ~TextOverlay(); virtual void render(RenderArgs* args); @@ -59,8 +60,6 @@ public: float textWidth(const QString& text) const; // Pixels private: - virtual void writeToClone(TextOverlay* clone); - QString _text; xColor _backgroundColor; int _leftMargin; diff --git a/interface/src/ui/overlays/Volume3DOverlay.cpp b/interface/src/ui/overlays/Volume3DOverlay.cpp index 8ceb51bbeb..42e2263a90 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.cpp +++ b/interface/src/ui/overlays/Volume3DOverlay.cpp @@ -28,6 +28,12 @@ Volume3DOverlay::Volume3DOverlay() : { } +Volume3DOverlay::Volume3DOverlay(Volume3DOverlay* volume3DOverlay) : + Base3DOverlay(volume3DOverlay), + _dimensions(volume3DOverlay->_dimensions) +{ +} + Volume3DOverlay::~Volume3DOverlay() { } @@ -116,7 +122,3 @@ bool Volume3DOverlay::findRayIntersection(const glm::vec3& origin, const glm::ve } return false; } - -void Volume3DOverlay::writeToClone(Volume3DOverlay* clone) { - Base3DOverlay::writeToClone(clone); -} diff --git a/interface/src/ui/overlays/Volume3DOverlay.h b/interface/src/ui/overlays/Volume3DOverlay.h index d08a16d708..1bdfc307b5 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.h +++ b/interface/src/ui/overlays/Volume3DOverlay.h @@ -26,6 +26,7 @@ class Volume3DOverlay : public Base3DOverlay { public: Volume3DOverlay(); + Volume3DOverlay(Volume3DOverlay* volume3DOverlay); ~Volume3DOverlay(); // getters @@ -43,7 +44,6 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; protected: - virtual void writeToClone(Volume3DOverlay* clone); glm::vec3 _dimensions; }; From 38ed1043979c316171e8d75d2fe3b06813770c8c Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Sat, 15 Nov 2014 00:21:50 +0100 Subject: [PATCH 9/9] added const to copy constructors --- interface/src/ui/overlays/Base3DOverlay.cpp | 2 +- interface/src/ui/overlays/Base3DOverlay.h | 2 +- interface/src/ui/overlays/BillboardOverlay.cpp | 4 ++-- interface/src/ui/overlays/BillboardOverlay.h | 4 ++-- interface/src/ui/overlays/Circle3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Circle3DOverlay.h | 4 ++-- interface/src/ui/overlays/Cube3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Cube3DOverlay.h | 4 ++-- interface/src/ui/overlays/Grid3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Grid3DOverlay.h | 4 ++-- interface/src/ui/overlays/ImageOverlay.cpp | 4 ++-- interface/src/ui/overlays/ImageOverlay.h | 4 ++-- interface/src/ui/overlays/Line3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Line3DOverlay.h | 4 ++-- interface/src/ui/overlays/LocalModelsOverlay.cpp | 8 ++++---- interface/src/ui/overlays/LocalModelsOverlay.h | 4 ++-- interface/src/ui/overlays/LocalVoxelsOverlay.cpp | 4 ++-- interface/src/ui/overlays/LocalVoxelsOverlay.h | 4 ++-- interface/src/ui/overlays/ModelOverlay.cpp | 4 ++-- interface/src/ui/overlays/ModelOverlay.h | 4 ++-- interface/src/ui/overlays/Overlay.cpp | 2 +- interface/src/ui/overlays/Overlay.h | 4 ++-- interface/src/ui/overlays/Overlay2D.cpp | 2 +- interface/src/ui/overlays/Overlay2D.h | 2 +- interface/src/ui/overlays/Planar3DOverlay.cpp | 2 +- interface/src/ui/overlays/Planar3DOverlay.h | 2 +- interface/src/ui/overlays/Rectangle3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Rectangle3DOverlay.h | 4 ++-- interface/src/ui/overlays/Sphere3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Sphere3DOverlay.h | 4 ++-- interface/src/ui/overlays/Text3DOverlay.cpp | 4 ++-- interface/src/ui/overlays/Text3DOverlay.h | 4 ++-- interface/src/ui/overlays/TextOverlay.cpp | 6 +++--- interface/src/ui/overlays/TextOverlay.h | 4 ++-- interface/src/ui/overlays/Volume3DOverlay.cpp | 2 +- interface/src/ui/overlays/Volume3DOverlay.h | 2 +- 36 files changed, 66 insertions(+), 66 deletions(-) diff --git a/interface/src/ui/overlays/Base3DOverlay.cpp b/interface/src/ui/overlays/Base3DOverlay.cpp index 7ed7079795..5a5bfcd937 100644 --- a/interface/src/ui/overlays/Base3DOverlay.cpp +++ b/interface/src/ui/overlays/Base3DOverlay.cpp @@ -31,7 +31,7 @@ Base3DOverlay::Base3DOverlay() : { } -Base3DOverlay::Base3DOverlay(Base3DOverlay* base3DOverlay) : +Base3DOverlay::Base3DOverlay(const Base3DOverlay* base3DOverlay) : Overlay(base3DOverlay), _position(base3DOverlay->_position), _lineWidth(base3DOverlay->_lineWidth), diff --git a/interface/src/ui/overlays/Base3DOverlay.h b/interface/src/ui/overlays/Base3DOverlay.h index 4422203566..8304883e3c 100644 --- a/interface/src/ui/overlays/Base3DOverlay.h +++ b/interface/src/ui/overlays/Base3DOverlay.h @@ -23,7 +23,7 @@ class Base3DOverlay : public Overlay { public: Base3DOverlay(); - Base3DOverlay(Base3DOverlay* base3DOverlay); + Base3DOverlay(const Base3DOverlay* base3DOverlay); ~Base3DOverlay(); // getters diff --git a/interface/src/ui/overlays/BillboardOverlay.cpp b/interface/src/ui/overlays/BillboardOverlay.cpp index 87c8f8bb74..dee5eceab7 100644 --- a/interface/src/ui/overlays/BillboardOverlay.cpp +++ b/interface/src/ui/overlays/BillboardOverlay.cpp @@ -24,7 +24,7 @@ BillboardOverlay::BillboardOverlay() : _isLoaded = false; } -BillboardOverlay::BillboardOverlay(BillboardOverlay* billboardOverlay) : +BillboardOverlay::BillboardOverlay(const BillboardOverlay* billboardOverlay) : Base3DOverlay(billboardOverlay), _newTextureNeeded(true), _scale(billboardOverlay->_scale), @@ -226,6 +226,6 @@ bool BillboardOverlay::findRayIntersection(const glm::vec3& origin, const glm::v return false; } -BillboardOverlay* BillboardOverlay::createClone() { +BillboardOverlay* BillboardOverlay::createClone() const { return new BillboardOverlay(this); } diff --git a/interface/src/ui/overlays/BillboardOverlay.h b/interface/src/ui/overlays/BillboardOverlay.h index e8c25c8549..be947acf98 100644 --- a/interface/src/ui/overlays/BillboardOverlay.h +++ b/interface/src/ui/overlays/BillboardOverlay.h @@ -22,7 +22,7 @@ class BillboardOverlay : public Base3DOverlay { Q_OBJECT public: BillboardOverlay(); - BillboardOverlay(BillboardOverlay* billboardOverlay); + BillboardOverlay(const BillboardOverlay* billboardOverlay); virtual void render(RenderArgs* args); @@ -37,7 +37,7 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; - virtual BillboardOverlay* createClone(); + virtual BillboardOverlay* createClone() const; private slots: void replyFinished(); diff --git a/interface/src/ui/overlays/Circle3DOverlay.cpp b/interface/src/ui/overlays/Circle3DOverlay.cpp index 6c0c82f3ec..d19297b589 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.cpp +++ b/interface/src/ui/overlays/Circle3DOverlay.cpp @@ -33,7 +33,7 @@ Circle3DOverlay::Circle3DOverlay() : _minorTickMarksColor.red = _minorTickMarksColor.green = _minorTickMarksColor.blue = (unsigned char)0; } -Circle3DOverlay::Circle3DOverlay(Circle3DOverlay* circle3DOverlay) : +Circle3DOverlay::Circle3DOverlay(const Circle3DOverlay* circle3DOverlay) : Planar3DOverlay(circle3DOverlay), _startAt(circle3DOverlay->_startAt), _endAt(circle3DOverlay->_endAt), @@ -374,6 +374,6 @@ bool Circle3DOverlay::findRayIntersection(const glm::vec3& origin, return intersects; } -Circle3DOverlay* Circle3DOverlay::createClone() { +Circle3DOverlay* Circle3DOverlay::createClone() const { return new Circle3DOverlay(this); } diff --git a/interface/src/ui/overlays/Circle3DOverlay.h b/interface/src/ui/overlays/Circle3DOverlay.h index cf9fc8e2fc..b428be7a43 100644 --- a/interface/src/ui/overlays/Circle3DOverlay.h +++ b/interface/src/ui/overlays/Circle3DOverlay.h @@ -18,7 +18,7 @@ class Circle3DOverlay : public Planar3DOverlay { public: Circle3DOverlay(); - Circle3DOverlay(Circle3DOverlay* circle3DOverlay); + Circle3DOverlay(const Circle3DOverlay* circle3DOverlay); ~Circle3DOverlay(); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); @@ -50,7 +50,7 @@ public: virtual bool findRayIntersection(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face) const; - virtual Circle3DOverlay* createClone(); + virtual Circle3DOverlay* createClone() const; protected: float _startAt; diff --git a/interface/src/ui/overlays/Cube3DOverlay.cpp b/interface/src/ui/overlays/Cube3DOverlay.cpp index 2aa4d29f23..9c478c4465 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.cpp +++ b/interface/src/ui/overlays/Cube3DOverlay.cpp @@ -22,7 +22,7 @@ Cube3DOverlay::Cube3DOverlay() { } -Cube3DOverlay::Cube3DOverlay(Cube3DOverlay* cube3DOverlay) : +Cube3DOverlay::Cube3DOverlay(const Cube3DOverlay* cube3DOverlay) : Volume3DOverlay(cube3DOverlay) { } @@ -108,6 +108,6 @@ void Cube3DOverlay::render(RenderArgs* args) { } } -Cube3DOverlay* Cube3DOverlay::createClone() { +Cube3DOverlay* Cube3DOverlay::createClone() const { return new Cube3DOverlay(this); } diff --git a/interface/src/ui/overlays/Cube3DOverlay.h b/interface/src/ui/overlays/Cube3DOverlay.h index 4fe137b73c..9c199f2b7b 100644 --- a/interface/src/ui/overlays/Cube3DOverlay.h +++ b/interface/src/ui/overlays/Cube3DOverlay.h @@ -18,11 +18,11 @@ class Cube3DOverlay : public Volume3DOverlay { public: Cube3DOverlay(); - Cube3DOverlay(Cube3DOverlay* cube3DOverlay); + Cube3DOverlay(const Cube3DOverlay* cube3DOverlay); ~Cube3DOverlay(); virtual void render(RenderArgs* args); - virtual Cube3DOverlay* createClone(); + virtual Cube3DOverlay* createClone() const; }; diff --git a/interface/src/ui/overlays/Grid3DOverlay.cpp b/interface/src/ui/overlays/Grid3DOverlay.cpp index 601413226a..84610d7981 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.cpp +++ b/interface/src/ui/overlays/Grid3DOverlay.cpp @@ -20,7 +20,7 @@ Grid3DOverlay::Grid3DOverlay() : Base3DOverlay(), _majorGridEvery(5) { } -Grid3DOverlay::Grid3DOverlay(Grid3DOverlay* grid3DOverlay) : +Grid3DOverlay::Grid3DOverlay(const Grid3DOverlay* grid3DOverlay) : Base3DOverlay(grid3DOverlay), _minorGridWidth(grid3DOverlay->_minorGridWidth), _majorGridEvery(grid3DOverlay->_majorGridEvery) @@ -135,6 +135,6 @@ QScriptValue Grid3DOverlay::getProperty(const QString& property) { return Base3DOverlay::getProperty(property); } -Grid3DOverlay* Grid3DOverlay::createClone() { +Grid3DOverlay* Grid3DOverlay::createClone() const { return new Grid3DOverlay(this); } diff --git a/interface/src/ui/overlays/Grid3DOverlay.h b/interface/src/ui/overlays/Grid3DOverlay.h index 28dfbf9de7..b162ff3d74 100644 --- a/interface/src/ui/overlays/Grid3DOverlay.h +++ b/interface/src/ui/overlays/Grid3DOverlay.h @@ -29,14 +29,14 @@ class Grid3DOverlay : public Base3DOverlay { public: Grid3DOverlay(); - Grid3DOverlay(Grid3DOverlay* grid3DOverlay); + Grid3DOverlay(const Grid3DOverlay* grid3DOverlay); ~Grid3DOverlay(); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); virtual QScriptValue getProperty(const QString& property); - virtual Grid3DOverlay* createClone(); + virtual Grid3DOverlay* createClone() const; private: float _minorGridWidth; diff --git a/interface/src/ui/overlays/ImageOverlay.cpp b/interface/src/ui/overlays/ImageOverlay.cpp index dd06ee4da2..fad19be292 100644 --- a/interface/src/ui/overlays/ImageOverlay.cpp +++ b/interface/src/ui/overlays/ImageOverlay.cpp @@ -27,7 +27,7 @@ ImageOverlay::ImageOverlay() : _isLoaded = false; } -ImageOverlay::ImageOverlay(ImageOverlay* imageOverlay) : +ImageOverlay::ImageOverlay(const ImageOverlay* imageOverlay) : Overlay2D(imageOverlay), _textureID(0), _textureBound(false), @@ -172,6 +172,6 @@ QScriptValue ImageOverlay::getProperty(const QString& property) { return Overlay2D::getProperty(property); } -ImageOverlay* ImageOverlay::createClone() { +ImageOverlay* ImageOverlay::createClone() const { return new ImageOverlay(this); } diff --git a/interface/src/ui/overlays/ImageOverlay.h b/interface/src/ui/overlays/ImageOverlay.h index 9c8d48a2e2..cff557654f 100644 --- a/interface/src/ui/overlays/ImageOverlay.h +++ b/interface/src/ui/overlays/ImageOverlay.h @@ -33,7 +33,7 @@ class ImageOverlay : public Overlay2D { public: ImageOverlay(); - ImageOverlay(ImageOverlay* imageOverlay); + ImageOverlay(const ImageOverlay* imageOverlay); ~ImageOverlay(); virtual void render(RenderArgs* args); @@ -47,7 +47,7 @@ public: virtual void setProperties(const QScriptValue& properties); virtual QScriptValue getProperty(const QString& property); - virtual ImageOverlay* createClone(); + virtual ImageOverlay* createClone() const; private slots: void replyFinished(); // we actually want to hide this... diff --git a/interface/src/ui/overlays/Line3DOverlay.cpp b/interface/src/ui/overlays/Line3DOverlay.cpp index aac773f08f..ae67bf9d92 100644 --- a/interface/src/ui/overlays/Line3DOverlay.cpp +++ b/interface/src/ui/overlays/Line3DOverlay.cpp @@ -18,7 +18,7 @@ Line3DOverlay::Line3DOverlay() { } -Line3DOverlay::Line3DOverlay(Line3DOverlay* line3DOverlay) : +Line3DOverlay::Line3DOverlay(const Line3DOverlay* line3DOverlay) : Base3DOverlay(line3DOverlay), _end(line3DOverlay->_end) { @@ -94,6 +94,6 @@ QScriptValue Line3DOverlay::getProperty(const QString& property) { return Base3DOverlay::getProperty(property); } -Line3DOverlay* Line3DOverlay::createClone() { +Line3DOverlay* Line3DOverlay::createClone() const { return new Line3DOverlay(this); } diff --git a/interface/src/ui/overlays/Line3DOverlay.h b/interface/src/ui/overlays/Line3DOverlay.h index 3d481438b9..607fb0e0bb 100644 --- a/interface/src/ui/overlays/Line3DOverlay.h +++ b/interface/src/ui/overlays/Line3DOverlay.h @@ -18,7 +18,7 @@ class Line3DOverlay : public Base3DOverlay { public: Line3DOverlay(); - Line3DOverlay(Line3DOverlay* line3DOverlay); + Line3DOverlay(const Line3DOverlay* line3DOverlay); ~Line3DOverlay(); virtual void render(RenderArgs* args); @@ -31,7 +31,7 @@ public: virtual void setProperties(const QScriptValue& properties); virtual QScriptValue getProperty(const QString& property); - virtual Line3DOverlay* createClone(); + virtual Line3DOverlay* createClone() const; protected: glm::vec3 _end; diff --git a/interface/src/ui/overlays/LocalModelsOverlay.cpp b/interface/src/ui/overlays/LocalModelsOverlay.cpp index 25cb0ead64..d8555c85ba 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.cpp +++ b/interface/src/ui/overlays/LocalModelsOverlay.cpp @@ -18,9 +18,9 @@ LocalModelsOverlay::LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer) : _entityTreeRenderer(entityTreeRenderer) { } -LocalModelsOverlay::LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer, LocalModelsOverlay* localModelsOverlay) : +LocalModelsOverlay::LocalModelsOverlay(const LocalModelsOverlay* localModelsOverlay) : Volume3DOverlay(localModelsOverlay), - _entityTreeRenderer(entityTreeRenderer) + _entityTreeRenderer(localModelsOverlay->_entityTreeRenderer) { } @@ -56,6 +56,6 @@ void LocalModelsOverlay::render(RenderArgs* args) { } } -LocalModelsOverlay* LocalModelsOverlay::createClone() { - return new LocalModelsOverlay(Application::getInstance()->getEntityClipboardRenderer(), this); +LocalModelsOverlay* LocalModelsOverlay::createClone() const { + return new LocalModelsOverlay(this); } diff --git a/interface/src/ui/overlays/LocalModelsOverlay.h b/interface/src/ui/overlays/LocalModelsOverlay.h index c38bc6b2a3..39465de7f9 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.h +++ b/interface/src/ui/overlays/LocalModelsOverlay.h @@ -20,13 +20,13 @@ class LocalModelsOverlay : public Volume3DOverlay { Q_OBJECT public: LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer); - LocalModelsOverlay(EntityTreeRenderer* entityTreeRenderer, LocalModelsOverlay* localModelsOverlay); + LocalModelsOverlay(const LocalModelsOverlay* localModelsOverlay); ~LocalModelsOverlay(); virtual void update(float deltatime); virtual void render(RenderArgs* args); - virtual LocalModelsOverlay* createClone(); + virtual LocalModelsOverlay* createClone() const; private: EntityTreeRenderer* _entityTreeRenderer; diff --git a/interface/src/ui/overlays/LocalVoxelsOverlay.cpp b/interface/src/ui/overlays/LocalVoxelsOverlay.cpp index 4c44fe6dd8..9cb3df8bf3 100644 --- a/interface/src/ui/overlays/LocalVoxelsOverlay.cpp +++ b/interface/src/ui/overlays/LocalVoxelsOverlay.cpp @@ -28,7 +28,7 @@ LocalVoxelsOverlay::LocalVoxelsOverlay() : { } -LocalVoxelsOverlay::LocalVoxelsOverlay(LocalVoxelsOverlay* localVoxelsOverlay) : +LocalVoxelsOverlay::LocalVoxelsOverlay(const LocalVoxelsOverlay* localVoxelsOverlay) : Volume3DOverlay(localVoxelsOverlay), _voxelCount(localVoxelsOverlay->_voxelCount) { @@ -109,7 +109,7 @@ void LocalVoxelsOverlay::setProperties(const QScriptValue &properties) { } } -LocalVoxelsOverlay* LocalVoxelsOverlay::createClone() { +LocalVoxelsOverlay* LocalVoxelsOverlay::createClone() const { return new LocalVoxelsOverlay(this); } diff --git a/interface/src/ui/overlays/LocalVoxelsOverlay.h b/interface/src/ui/overlays/LocalVoxelsOverlay.h index 3e5bbbc5b6..4afa44f9be 100644 --- a/interface/src/ui/overlays/LocalVoxelsOverlay.h +++ b/interface/src/ui/overlays/LocalVoxelsOverlay.h @@ -32,7 +32,7 @@ class LocalVoxelsOverlay : public Volume3DOverlay { Q_OBJECT public: LocalVoxelsOverlay(); - LocalVoxelsOverlay(LocalVoxelsOverlay* localVoxelsOverlay); + LocalVoxelsOverlay(const LocalVoxelsOverlay* localVoxelsOverlay); ~LocalVoxelsOverlay(); virtual void update(float deltatime); @@ -41,7 +41,7 @@ public: virtual void setProperties(const QScriptValue& properties); virtual QScriptValue getProperty(const QString& property); - virtual LocalVoxelsOverlay* createClone(); + virtual LocalVoxelsOverlay* createClone() const; private: static QMap _voxelSystemMap; // treeName/voxelSystem diff --git a/interface/src/ui/overlays/ModelOverlay.cpp b/interface/src/ui/overlays/ModelOverlay.cpp index f1c588f45d..3594d7e828 100644 --- a/interface/src/ui/overlays/ModelOverlay.cpp +++ b/interface/src/ui/overlays/ModelOverlay.cpp @@ -22,7 +22,7 @@ ModelOverlay::ModelOverlay() _isLoaded = false; } -ModelOverlay::ModelOverlay(ModelOverlay* modelOverlay) : +ModelOverlay::ModelOverlay(const ModelOverlay* modelOverlay) : Base3DOverlay(modelOverlay), _model(), _modelTextures(QVariantMap()), @@ -182,6 +182,6 @@ bool ModelOverlay::findRayIntersectionExtraInfo(const glm::vec3& origin, const g return _model.findRayIntersectionAgainstSubMeshes(origin, direction, distance, face, extraInfo); } -ModelOverlay* ModelOverlay::createClone() { +ModelOverlay* ModelOverlay::createClone() const { return new ModelOverlay(this); } diff --git a/interface/src/ui/overlays/ModelOverlay.h b/interface/src/ui/overlays/ModelOverlay.h index 393e09c78b..80b52ea27e 100644 --- a/interface/src/ui/overlays/ModelOverlay.h +++ b/interface/src/ui/overlays/ModelOverlay.h @@ -20,7 +20,7 @@ class ModelOverlay : public Base3DOverlay { Q_OBJECT public: ModelOverlay(); - ModelOverlay(ModelOverlay* modelOverlay); + ModelOverlay(const ModelOverlay* modelOverlay); virtual void update(float deltatime); virtual void render(RenderArgs* args); @@ -30,7 +30,7 @@ public: virtual bool findRayIntersectionExtraInfo(const glm::vec3& origin, const glm::vec3& direction, float& distance, BoxFace& face, QString& extraInfo) const; - virtual ModelOverlay* createClone(); + virtual ModelOverlay* createClone() const; private: diff --git a/interface/src/ui/overlays/Overlay.cpp b/interface/src/ui/overlays/Overlay.cpp index e67c1572f1..549152ded0 100644 --- a/interface/src/ui/overlays/Overlay.cpp +++ b/interface/src/ui/overlays/Overlay.cpp @@ -39,7 +39,7 @@ Overlay::Overlay() : { } -Overlay::Overlay(Overlay* overlay) : +Overlay::Overlay(const Overlay* overlay) : _parent(NULL), _alpha(overlay->_alpha), _lastPulseUpdate(usecTimestampNow()), diff --git a/interface/src/ui/overlays/Overlay.h b/interface/src/ui/overlays/Overlay.h index 341a7b56a3..99ab588197 100644 --- a/interface/src/ui/overlays/Overlay.h +++ b/interface/src/ui/overlays/Overlay.h @@ -36,7 +36,7 @@ public: }; Overlay(); - Overlay(Overlay* overlay); + Overlay(const Overlay* overlay); ~Overlay(); void init(QGLWidget* parent, QScriptEngine* scriptEngine); virtual void update(float deltatime) {} @@ -79,7 +79,7 @@ public: void setAlphaPulse(float value) { _alphaPulse = value; } virtual void setProperties(const QScriptValue& properties); - virtual Overlay* createClone() = 0; + virtual Overlay* createClone() const = 0; virtual QScriptValue getProperty(const QString& property); protected: diff --git a/interface/src/ui/overlays/Overlay2D.cpp b/interface/src/ui/overlays/Overlay2D.cpp index 53ef9cdf29..df7df391eb 100644 --- a/interface/src/ui/overlays/Overlay2D.cpp +++ b/interface/src/ui/overlays/Overlay2D.cpp @@ -22,7 +22,7 @@ Overlay2D::Overlay2D() { } -Overlay2D::Overlay2D(Overlay2D* overlay2D) : +Overlay2D::Overlay2D(const Overlay2D* overlay2D) : Overlay(overlay2D), _bounds(overlay2D->_bounds) { diff --git a/interface/src/ui/overlays/Overlay2D.h b/interface/src/ui/overlays/Overlay2D.h index ea3936c2c7..7493add905 100644 --- a/interface/src/ui/overlays/Overlay2D.h +++ b/interface/src/ui/overlays/Overlay2D.h @@ -28,7 +28,7 @@ class Overlay2D : public Overlay { public: Overlay2D(); - Overlay2D(Overlay2D* overlay2D); + Overlay2D(const Overlay2D* overlay2D); ~Overlay2D(); virtual bool is3D() const { return false; } diff --git a/interface/src/ui/overlays/Planar3DOverlay.cpp b/interface/src/ui/overlays/Planar3DOverlay.cpp index 390b92948c..a8288b241c 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.cpp +++ b/interface/src/ui/overlays/Planar3DOverlay.cpp @@ -26,7 +26,7 @@ Planar3DOverlay::Planar3DOverlay() : { } -Planar3DOverlay::Planar3DOverlay(Planar3DOverlay* planar3DOverlay) : +Planar3DOverlay::Planar3DOverlay(const Planar3DOverlay* planar3DOverlay) : Base3DOverlay(planar3DOverlay), _dimensions(planar3DOverlay->_dimensions) { diff --git a/interface/src/ui/overlays/Planar3DOverlay.h b/interface/src/ui/overlays/Planar3DOverlay.h index 7de68e24b2..d34fe44ebc 100644 --- a/interface/src/ui/overlays/Planar3DOverlay.h +++ b/interface/src/ui/overlays/Planar3DOverlay.h @@ -26,7 +26,7 @@ class Planar3DOverlay : public Base3DOverlay { public: Planar3DOverlay(); - Planar3DOverlay(Planar3DOverlay* planar3DOverlay); + Planar3DOverlay(const Planar3DOverlay* planar3DOverlay); ~Planar3DOverlay(); // getters diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.cpp b/interface/src/ui/overlays/Rectangle3DOverlay.cpp index a2043d77c1..bcca759cd4 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.cpp +++ b/interface/src/ui/overlays/Rectangle3DOverlay.cpp @@ -20,7 +20,7 @@ Rectangle3DOverlay::Rectangle3DOverlay() { } -Rectangle3DOverlay::Rectangle3DOverlay(Rectangle3DOverlay* rectangle3DOverlay) : +Rectangle3DOverlay::Rectangle3DOverlay(const Rectangle3DOverlay* rectangle3DOverlay) : Planar3DOverlay(rectangle3DOverlay) { } @@ -111,6 +111,6 @@ void Rectangle3DOverlay::setProperties(const QScriptValue &properties) { Planar3DOverlay::setProperties(properties); } -Rectangle3DOverlay* Rectangle3DOverlay::createClone() { +Rectangle3DOverlay* Rectangle3DOverlay::createClone() const { return new Rectangle3DOverlay(this); } diff --git a/interface/src/ui/overlays/Rectangle3DOverlay.h b/interface/src/ui/overlays/Rectangle3DOverlay.h index 98e04324b4..5e75469f2d 100644 --- a/interface/src/ui/overlays/Rectangle3DOverlay.h +++ b/interface/src/ui/overlays/Rectangle3DOverlay.h @@ -18,12 +18,12 @@ class Rectangle3DOverlay : public Planar3DOverlay { public: Rectangle3DOverlay(); - Rectangle3DOverlay(Rectangle3DOverlay* rectangle3DOverlay); + Rectangle3DOverlay(const Rectangle3DOverlay* rectangle3DOverlay); ~Rectangle3DOverlay(); virtual void render(RenderArgs* args); virtual void setProperties(const QScriptValue& properties); - virtual Rectangle3DOverlay* createClone(); + virtual Rectangle3DOverlay* createClone() const; }; diff --git a/interface/src/ui/overlays/Sphere3DOverlay.cpp b/interface/src/ui/overlays/Sphere3DOverlay.cpp index 30bb7d1c52..34064675e5 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.cpp +++ b/interface/src/ui/overlays/Sphere3DOverlay.cpp @@ -21,7 +21,7 @@ Sphere3DOverlay::Sphere3DOverlay() { } -Sphere3DOverlay::Sphere3DOverlay(Sphere3DOverlay* Sphere3DOverlay) : +Sphere3DOverlay::Sphere3DOverlay(const Sphere3DOverlay* Sphere3DOverlay) : Volume3DOverlay(Sphere3DOverlay) { } @@ -76,6 +76,6 @@ void Sphere3DOverlay::render(RenderArgs* args) { } -Sphere3DOverlay* Sphere3DOverlay::createClone() { +Sphere3DOverlay* Sphere3DOverlay::createClone() const { return new Sphere3DOverlay(this); } diff --git a/interface/src/ui/overlays/Sphere3DOverlay.h b/interface/src/ui/overlays/Sphere3DOverlay.h index 2f63c4fe48..3b881e5ba6 100644 --- a/interface/src/ui/overlays/Sphere3DOverlay.h +++ b/interface/src/ui/overlays/Sphere3DOverlay.h @@ -18,11 +18,11 @@ class Sphere3DOverlay : public Volume3DOverlay { public: Sphere3DOverlay(); - Sphere3DOverlay(Sphere3DOverlay* Sphere3DOverlay); + Sphere3DOverlay(const Sphere3DOverlay* Sphere3DOverlay); ~Sphere3DOverlay(); virtual void render(RenderArgs* args); - virtual Sphere3DOverlay* createClone(); + virtual Sphere3DOverlay* createClone() const; }; diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index 0a83ec80f5..88ac009ac7 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -31,7 +31,7 @@ Text3DOverlay::Text3DOverlay() : { } -Text3DOverlay::Text3DOverlay(Text3DOverlay* text3DOverlay) : +Text3DOverlay::Text3DOverlay(const Text3DOverlay* text3DOverlay) : Planar3DOverlay(text3DOverlay), _text(text3DOverlay->_text), _backgroundColor(text3DOverlay->_backgroundColor), @@ -220,7 +220,7 @@ QScriptValue Text3DOverlay::getProperty(const QString& property) { return Planar3DOverlay::getProperty(property); } -Text3DOverlay* Text3DOverlay::createClone() { +Text3DOverlay* Text3DOverlay::createClone() const { return new Text3DOverlay(this);; } diff --git a/interface/src/ui/overlays/Text3DOverlay.h b/interface/src/ui/overlays/Text3DOverlay.h index c459b2eb36..c624830ac8 100644 --- a/interface/src/ui/overlays/Text3DOverlay.h +++ b/interface/src/ui/overlays/Text3DOverlay.h @@ -24,7 +24,7 @@ class Text3DOverlay : public Planar3DOverlay { public: Text3DOverlay(); - Text3DOverlay(Text3DOverlay* text3DOverlay); + Text3DOverlay(const Text3DOverlay* text3DOverlay); ~Text3DOverlay(); virtual void render(RenderArgs* args); @@ -52,7 +52,7 @@ public: float textWidth(const QString& text) const; // Meters - virtual Text3DOverlay* createClone(); + virtual Text3DOverlay* createClone() const; private: void enableClipPlane(GLenum plane, float x, float y, float z, float w); diff --git a/interface/src/ui/overlays/TextOverlay.cpp b/interface/src/ui/overlays/TextOverlay.cpp index 368a604c9a..1d72cf7f05 100644 --- a/interface/src/ui/overlays/TextOverlay.cpp +++ b/interface/src/ui/overlays/TextOverlay.cpp @@ -25,7 +25,7 @@ TextOverlay::TextOverlay() : { } -TextOverlay::TextOverlay(TextOverlay* textOverlay) : +TextOverlay::TextOverlay(const TextOverlay* textOverlay) : Overlay2D(textOverlay), _text(textOverlay->_text), _backgroundColor(textOverlay->_backgroundColor), @@ -134,8 +134,8 @@ void TextOverlay::setProperties(const QScriptValue& properties) { } } -TextOverlay* TextOverlay::createClone() { - return new TextOverlay(this);; +TextOverlay* TextOverlay::createClone() const { + return new TextOverlay(this); } QScriptValue TextOverlay::getProperty(const QString& property) { diff --git a/interface/src/ui/overlays/TextOverlay.h b/interface/src/ui/overlays/TextOverlay.h index adfd9bde17..703e15be10 100644 --- a/interface/src/ui/overlays/TextOverlay.h +++ b/interface/src/ui/overlays/TextOverlay.h @@ -37,7 +37,7 @@ class TextOverlay : public Overlay2D { public: TextOverlay(); - TextOverlay(TextOverlay* textOverlay); + TextOverlay(const TextOverlay* textOverlay); ~TextOverlay(); virtual void render(RenderArgs* args); @@ -54,7 +54,7 @@ public: void setFontSize(int fontSize) { _fontSize = fontSize; } virtual void setProperties(const QScriptValue& properties); - virtual TextOverlay* createClone(); + virtual TextOverlay* createClone() const; virtual QScriptValue getProperty(const QString& property); float textWidth(const QString& text) const; // Pixels diff --git a/interface/src/ui/overlays/Volume3DOverlay.cpp b/interface/src/ui/overlays/Volume3DOverlay.cpp index 42e2263a90..c4192a15b2 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.cpp +++ b/interface/src/ui/overlays/Volume3DOverlay.cpp @@ -28,7 +28,7 @@ Volume3DOverlay::Volume3DOverlay() : { } -Volume3DOverlay::Volume3DOverlay(Volume3DOverlay* volume3DOverlay) : +Volume3DOverlay::Volume3DOverlay(const Volume3DOverlay* volume3DOverlay) : Base3DOverlay(volume3DOverlay), _dimensions(volume3DOverlay->_dimensions) { diff --git a/interface/src/ui/overlays/Volume3DOverlay.h b/interface/src/ui/overlays/Volume3DOverlay.h index 1bdfc307b5..005646c036 100644 --- a/interface/src/ui/overlays/Volume3DOverlay.h +++ b/interface/src/ui/overlays/Volume3DOverlay.h @@ -26,7 +26,7 @@ class Volume3DOverlay : public Base3DOverlay { public: Volume3DOverlay(); - Volume3DOverlay(Volume3DOverlay* volume3DOverlay); + Volume3DOverlay(const Volume3DOverlay* volume3DOverlay); ~Volume3DOverlay(); // getters