From 57cc7adbfe8ac4f2c1abc2c24ef5b9ca573bd322 Mon Sep 17 00:00:00 2001 From: Brad Hefta-Gaub Date: Wed, 7 Oct 2015 12:27:12 -0700 Subject: [PATCH] standardize somethingChanged - CR feedback --- .../src/RenderableModelEntityItem.cpp | 6 ++-- .../src/RenderableModelEntityItem.h | 3 +- .../src/RenderableZoneEntityItem.cpp | 6 ++-- .../src/RenderableZoneEntityItem.h | 3 +- .../entities/src/AnimationPropertyGroup.cpp | 33 ++----------------- .../entities/src/AnimationPropertyGroup.h | 21 ++---------- .../entities/src/AtmospherePropertyGroup.cpp | 4 ++- .../entities/src/AtmospherePropertyGroup.h | 3 +- libraries/entities/src/BoxEntityItem.cpp | 3 +- libraries/entities/src/BoxEntityItem.h | 3 +- libraries/entities/src/EntityItem.cpp | 3 +- libraries/entities/src/EntityItem.h | 5 +-- .../entities/src/EntityItemPropertiesMacros.h | 1 + libraries/entities/src/EntityTree.cpp | 2 -- libraries/entities/src/LightEntityItem.cpp | 3 +- libraries/entities/src/LightEntityItem.h | 3 +- libraries/entities/src/LineEntityItem.cpp | 4 +-- libraries/entities/src/LineEntityItem.h | 3 +- libraries/entities/src/ModelEntityItem.cpp | 9 +++-- libraries/entities/src/ModelEntityItem.h | 3 +- .../entities/src/ParticleEffectEntityItem.cpp | 3 +- .../entities/src/ParticleEffectEntityItem.h | 3 +- libraries/entities/src/PolyLineEntityItem.cpp | 6 ++-- libraries/entities/src/PolyLineEntityItem.h | 3 +- libraries/entities/src/PolyVoxEntityItem.cpp | 3 +- libraries/entities/src/PolyVoxEntityItem.h | 3 +- libraries/entities/src/PropertyGroup.h | 10 ++---- .../entities/src/SkyboxPropertyGroup.cpp | 4 ++- libraries/entities/src/SkyboxPropertyGroup.h | 3 +- libraries/entities/src/SphereEntityItem.cpp | 3 +- libraries/entities/src/SphereEntityItem.h | 3 +- libraries/entities/src/StagePropertyGroup.cpp | 4 ++- libraries/entities/src/StagePropertyGroup.h | 3 +- libraries/entities/src/TextEntityItem.cpp | 3 +- libraries/entities/src/TextEntityItem.h | 3 +- libraries/entities/src/WebEntityItem.cpp | 3 +- libraries/entities/src/WebEntityItem.h | 3 +- libraries/entities/src/ZoneEntityItem.cpp | 9 ++--- libraries/entities/src/ZoneEntityItem.h | 3 +- 39 files changed, 93 insertions(+), 103 deletions(-) diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp index ed088bc9b5..5627338ebf 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp @@ -46,10 +46,12 @@ bool RenderableModelEntityItem::setProperties(const EntityItemProperties& proper int RenderableModelEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { QString oldModelURL = getModelURL(); int bytesRead = ModelEntityItem::readEntitySubclassDataFromBuffer(data, bytesLeftToRead, - args, propertyFlags, overwriteLocalData); + args, propertyFlags, + overwriteLocalData, somethingChanged); if (oldModelURL != getModelURL()) { _needsModelReload = true; } diff --git a/libraries/entities-renderer/src/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h index 509b842c08..9673a378f6 100644 --- a/libraries/entities-renderer/src/RenderableModelEntityItem.h +++ b/libraries/entities-renderer/src/RenderableModelEntityItem.h @@ -39,7 +39,8 @@ public: virtual bool setProperties(const EntityItemProperties& properties); virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); virtual void somethingChangedNotification() { // FIX ME: this is overly aggressive. We only really need to simulate() if something about diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index c8088b7406..ff56bef46b 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -61,11 +61,13 @@ bool RenderableZoneEntityItem::setProperties(const EntityItemProperties& propert int RenderableZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; changeProperties([&]() { bytesRead = ZoneEntityItem::readEntitySubclassDataFromBuffer(data, bytesLeftToRead, - args, propertyFlags, overwriteLocalData); + args, propertyFlags, + overwriteLocalData, somethingChanged); }); return bytesRead; } diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h index f455ea34de..92de136df6 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.h @@ -30,7 +30,8 @@ public: virtual bool setProperties(const EntityItemProperties& properties); virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); virtual void render(RenderArgs* args); virtual bool contains(const glm::vec3& point) const; diff --git a/libraries/entities/src/AnimationPropertyGroup.cpp b/libraries/entities/src/AnimationPropertyGroup.cpp index f648c4c06e..8b5d64b387 100644 --- a/libraries/entities/src/AnimationPropertyGroup.cpp +++ b/libraries/entities/src/AnimationPropertyGroup.cpp @@ -212,6 +212,7 @@ bool AnimationPropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyF int bytesRead = 0; bool overwriteLocalData = true; + bool somethingChanged = false; READ_ENTITY_PROPERTY(PROP_ANIMATION_URL, QString, setURL); @@ -320,8 +321,6 @@ bool AnimationPropertyGroup::setProperties(const EntityItemProperties& propertie SET_ENTITY_GROUP_PROPERTY_FROM_PROPERTIES(Animation, StartAutomatically, startAutomatically, setStartAutomatically); } - _somethingChanged = somethingChanged; - return somethingChanged; } @@ -375,15 +374,8 @@ void AnimationPropertyGroup::appendSubclassData(OctreePacketData* packetData, En int AnimationPropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { - - float fps = _animationLoop ? _animationLoop->getFPS() : getFPS(); - bool running = _animationLoop ? _animationLoop->getRunning() : getRunning(); - float firstFrame = _animationLoop ? _animationLoop->getFirstFrame() : getFirstFrame(); - float lastFrame = _animationLoop ? _animationLoop->getLastFrame() : getLastFrame(); - bool loop = _animationLoop ? _animationLoop->getLoop() : getLoop(); - bool hold = _animationLoop ? _animationLoop->getHold() : getHold(); - bool startAutomatically = _animationLoop ? _animationLoop->getStartAutomatically() : getStartAutomatically(); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; @@ -411,24 +403,5 @@ int AnimationPropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char READ_ENTITY_PROPERTY(PROP_ANIMATION_START_AUTOMATICALLY, bool, setStartAutomatically); } - float newFPS = _animationLoop ? _animationLoop->getFPS() : getFPS(); - bool newRunning = _animationLoop ? _animationLoop->getRunning() : getRunning(); - float newFirstFrame = _animationLoop ? _animationLoop->getFirstFrame() : getFirstFrame(); - float newLastFrame = _animationLoop ? _animationLoop->getLastFrame() : getLastFrame(); - bool newLoop = _animationLoop ? _animationLoop->getLoop() : getLoop(); - bool newHold = _animationLoop ? _animationLoop->getHold() : getHold(); - bool newStartAutomatically = _animationLoop ? _animationLoop->getStartAutomatically() : getStartAutomatically(); - - // NOTE: we don't check frameIndex because that is assumed to always be changing. - _somethingChanged = newFPS != fps || - newRunning != running || - newFirstFrame != firstFrame || - newLastFrame != lastFrame || - newLoop != loop || - newHold != hold || - newStartAutomatically != startAutomatically; - - - return bytesRead; } diff --git a/libraries/entities/src/AnimationPropertyGroup.h b/libraries/entities/src/AnimationPropertyGroup.h index 5612c1a99e..60f57ef491 100644 --- a/libraries/entities/src/AnimationPropertyGroup.h +++ b/libraries/entities/src/AnimationPropertyGroup.h @@ -10,24 +10,6 @@ // -// FIXME - TODO -// DONE - 1) make EntityItemProperties support old versions of animation properties -// DONE - 2) rename the group animationSettings -// DONE - 3) make sure that setting properties and reading from stream actually set the animationLoop object properly -// 4) test it! -// DONE - a) toybox/windmill -// DONE - b) toybox "put me down" doll -// c) asana bugs about animations -// d) spray paint can (particles) -// e) grenade -// -// DONE - 5) update all scripts -// DONE - 6) remove all remnants of old member variables -// DONE - 7) research and remove animation settings from Particle Effect -// DONE - 8) make sure animations start properly when entering a domain... with previously running animations -// 9) debug running property -// - #ifndef hifi_AnimationPropertyGroup_h #define hifi_AnimationPropertyGroup_h @@ -88,7 +70,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); DEFINE_PROPERTY_REF(PROP_ANIMATION_URL, URL, url, QString); DEFINE_PROPERTY(PROP_ANIMATION_FPS, FPS, fps, float); diff --git a/libraries/entities/src/AtmospherePropertyGroup.cpp b/libraries/entities/src/AtmospherePropertyGroup.cpp index 676a214b81..e24dc5791b 100644 --- a/libraries/entities/src/AtmospherePropertyGroup.cpp +++ b/libraries/entities/src/AtmospherePropertyGroup.cpp @@ -88,6 +88,7 @@ bool AtmospherePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& property int bytesRead = 0; bool overwriteLocalData = true; + bool somethingChanged = false; READ_ENTITY_PROPERTY(PROP_ATMOSPHERE_CENTER, glm::vec3, setCenter); READ_ENTITY_PROPERTY(PROP_ATMOSPHERE_INNER_RADIUS, float, setInnerRadius); @@ -194,7 +195,8 @@ void AtmospherePropertyGroup::appendSubclassData(OctreePacketData* packetData, E int AtmospherePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/AtmospherePropertyGroup.h b/libraries/entities/src/AtmospherePropertyGroup.h index 715b923feb..50ed56ef87 100644 --- a/libraries/entities/src/AtmospherePropertyGroup.h +++ b/libraries/entities/src/AtmospherePropertyGroup.h @@ -87,7 +87,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); DEFINE_PROPERTY_REF(PROP_ATMOSPHERE_CENTER, Center, center, glm::vec3); diff --git a/libraries/entities/src/BoxEntityItem.cpp b/libraries/entities/src/BoxEntityItem.cpp index 4f30060207..97a9d77236 100644 --- a/libraries/entities/src/BoxEntityItem.cpp +++ b/libraries/entities/src/BoxEntityItem.cpp @@ -65,7 +65,8 @@ bool BoxEntityItem::setProperties(const EntityItemProperties& properties) { int BoxEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/BoxEntityItem.h b/libraries/entities/src/BoxEntityItem.h index cc3bba4823..6c1b5b2312 100644 --- a/libraries/entities/src/BoxEntityItem.h +++ b/libraries/entities/src/BoxEntityItem.h @@ -39,7 +39,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); const rgbColor& getColor() const { return _color; } xColor getXColor() const { xColor color = { _color[RED_INDEX], _color[GREEN_INDEX], _color[BLUE_INDEX] }; return color; } diff --git a/libraries/entities/src/EntityItem.cpp b/libraries/entities/src/EntityItem.cpp index c4f5ad0061..a8f3adc12e 100644 --- a/libraries/entities/src/EntityItem.cpp +++ b/libraries/entities/src/EntityItem.cpp @@ -403,6 +403,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef bool overwriteLocalData = true; // assume the new content overwrites our local data quint64 now = usecTimestampNow(); + bool somethingChanged = false; // _created { @@ -715,7 +716,7 @@ int EntityItem::readEntityDataFromBuffer(const unsigned char* data, int bytesLef } bytesRead += readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData); + propertyFlags, overwriteLocalData, somethingChanged); //////////////////////////////////// // WARNING: Do not add stream content here after the subclass. Always add it before the subclass diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index d11ffadc75..23892c6fc3 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -179,8 +179,9 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) - { return 0; } + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) + { somethingChanged = false; return 0; } virtual bool addToScene(EntityItemPointer self, std::shared_ptr scene, render::PendingChanges& pendingChanges) { return false; } // by default entity items don't add to scene diff --git a/libraries/entities/src/EntityItemPropertiesMacros.h b/libraries/entities/src/EntityItemPropertiesMacros.h index 8e0b968fcb..39d8a38380 100644 --- a/libraries/entities/src/EntityItemPropertiesMacros.h +++ b/libraries/entities/src/EntityItemPropertiesMacros.h @@ -42,6 +42,7 @@ if (overwriteLocalData) { \ S(fromBuffer); \ } \ + somethingChanged = true; \ } #define SKIP_ENTITY_PROPERTY(P,T) \ diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 44183d76de..c4c02d364f 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -583,8 +583,6 @@ int EntityTree::processEditPacketData(NLPacket& packet, const unsigned char* edi case PacketType::EntityAdd: case PacketType::EntityEdit: { - qCDebug(entities) << "EntityTree::processEditPacketData()... EntityAdd/EntityEdit"; - quint64 startDecode = 0, endDecode = 0; quint64 startLookup = 0, endLookup = 0; quint64 startUpdate = 0, endUpdate = 0; diff --git a/libraries/entities/src/LightEntityItem.cpp b/libraries/entities/src/LightEntityItem.cpp index 1d2e358799..376b84921a 100644 --- a/libraries/entities/src/LightEntityItem.cpp +++ b/libraries/entities/src/LightEntityItem.cpp @@ -119,7 +119,8 @@ bool LightEntityItem::setProperties(const EntityItemProperties& properties) { int LightEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/LightEntityItem.h b/libraries/entities/src/LightEntityItem.h index 0590955700..9f8d340852 100644 --- a/libraries/entities/src/LightEntityItem.h +++ b/libraries/entities/src/LightEntityItem.h @@ -41,7 +41,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); const rgbColor& getColor() const { return _color; } xColor getXColor() const { diff --git a/libraries/entities/src/LineEntityItem.cpp b/libraries/entities/src/LineEntityItem.cpp index 856d443a44..ab9b656963 100644 --- a/libraries/entities/src/LineEntityItem.cpp +++ b/libraries/entities/src/LineEntityItem.cpp @@ -121,7 +121,8 @@ bool LineEntityItem::setLinePoints(const QVector& points) { int LineEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; @@ -129,7 +130,6 @@ int LineEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_COLOR, rgbColor, setColor); READ_ENTITY_PROPERTY(PROP_LINE_WIDTH, float, setLineWidth); READ_ENTITY_PROPERTY(PROP_LINE_POINTS, QVector, setLinePoints); - return bytesRead; } diff --git a/libraries/entities/src/LineEntityItem.h b/libraries/entities/src/LineEntityItem.h index b462cd804c..b20587637f 100644 --- a/libraries/entities/src/LineEntityItem.h +++ b/libraries/entities/src/LineEntityItem.h @@ -39,7 +39,8 @@ class LineEntityItem : public EntityItem { virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); const rgbColor& getColor() const { return _color; } xColor getXColor() const { xColor color = { _color[RED_INDEX], _color[GREEN_INDEX], _color[BLUE_INDEX] }; return color; } diff --git a/libraries/entities/src/ModelEntityItem.cpp b/libraries/entities/src/ModelEntityItem.cpp index 1eafc50141..6f426a539e 100644 --- a/libraries/entities/src/ModelEntityItem.cpp +++ b/libraries/entities/src/ModelEntityItem.cpp @@ -85,10 +85,12 @@ bool ModelEntityItem::setProperties(const EntityItemProperties& properties) { int ModelEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; + bool animationPropertiesChanged = false; READ_ENTITY_PROPERTY(PROP_COLOR, rgbColor, setColor); READ_ENTITY_PROPERTY(PROP_MODEL_URL, QString, setModelURL); @@ -116,7 +118,7 @@ int ModelEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, // Note: since we've associated our _animationProperties with our _animationLoop, the readEntitySubclassDataFromBuffer() // will automatically read into the animation loop int bytesFromAnimation = _animationProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData); + propertyFlags, overwriteLocalData, animationPropertiesChanged); bytesRead += bytesFromAnimation; dataAt += bytesFromAnimation; @@ -124,8 +126,9 @@ int ModelEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_SHAPE_TYPE, ShapeType, updateShapeType); - if (_animationProperties.somethingChanged()) { + if (animationPropertiesChanged) { _dirtyFlags |= EntityItem::DIRTY_UPDATEABLE; + somethingChanged = true; } return bytesRead; diff --git a/libraries/entities/src/ModelEntityItem.h b/libraries/entities/src/ModelEntityItem.h index 83e98c21eb..cbd54a6acd 100644 --- a/libraries/entities/src/ModelEntityItem.h +++ b/libraries/entities/src/ModelEntityItem.h @@ -42,7 +42,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); virtual void update(const quint64& now); virtual bool needsToCallUpdate() const; diff --git a/libraries/entities/src/ParticleEffectEntityItem.cpp b/libraries/entities/src/ParticleEffectEntityItem.cpp index ace0edb0e1..a0a79996c9 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.cpp +++ b/libraries/entities/src/ParticleEffectEntityItem.cpp @@ -246,7 +246,8 @@ bool ParticleEffectEntityItem::setProperties(const EntityItemProperties& propert int ParticleEffectEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/ParticleEffectEntityItem.h b/libraries/entities/src/ParticleEffectEntityItem.h index 44cfb76a02..3f8fe5bf51 100644 --- a/libraries/entities/src/ParticleEffectEntityItem.h +++ b/libraries/entities/src/ParticleEffectEntityItem.h @@ -40,7 +40,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); virtual void update(const quint64& now); virtual bool needsToCallUpdate() const; diff --git a/libraries/entities/src/PolyLineEntityItem.cpp b/libraries/entities/src/PolyLineEntityItem.cpp index a01c2ce17b..fbb8250882 100644 --- a/libraries/entities/src/PolyLineEntityItem.cpp +++ b/libraries/entities/src/PolyLineEntityItem.cpp @@ -184,8 +184,10 @@ bool PolyLineEntityItem::setLinePoints(const QVector& points) { int PolyLineEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { - QWriteLocker lock(&_quadReadWriteLock); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { + + QWriteLocker lock(&_quadReadWriteLock); int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/PolyLineEntityItem.h b/libraries/entities/src/PolyLineEntityItem.h index e20a0b1c93..86a1dfb6e0 100644 --- a/libraries/entities/src/PolyLineEntityItem.h +++ b/libraries/entities/src/PolyLineEntityItem.h @@ -39,7 +39,8 @@ class PolyLineEntityItem : public EntityItem { virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); const rgbColor& getColor() const { return _color; } xColor getXColor() const { xColor color = { _color[RED_INDEX], _color[GREEN_INDEX], _color[BLUE_INDEX] }; return color; } diff --git a/libraries/entities/src/PolyVoxEntityItem.cpp b/libraries/entities/src/PolyVoxEntityItem.cpp index 70ae25c65c..368954b891 100644 --- a/libraries/entities/src/PolyVoxEntityItem.cpp +++ b/libraries/entities/src/PolyVoxEntityItem.cpp @@ -152,7 +152,8 @@ bool PolyVoxEntityItem::setProperties(const EntityItemProperties& properties) { int PolyVoxEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/PolyVoxEntityItem.h b/libraries/entities/src/PolyVoxEntityItem.h index 8a781bf127..9070ad250f 100644 --- a/libraries/entities/src/PolyVoxEntityItem.h +++ b/libraries/entities/src/PolyVoxEntityItem.h @@ -39,7 +39,8 @@ class PolyVoxEntityItem : public EntityItem { virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); // never have a ray intersection pick a PolyVoxEntityItem. virtual bool supportsDetailedRayIntersection() const { return true; } diff --git a/libraries/entities/src/PropertyGroup.h b/libraries/entities/src/PropertyGroup.h index d030400993..ea73f8656a 100644 --- a/libraries/entities/src/PropertyGroup.h +++ b/libraries/entities/src/PropertyGroup.h @@ -81,10 +81,6 @@ public: /// has changed. This will be called with properties change or when new data is loaded from a stream virtual void somethingChangedNotification() { } - /// set to true or false after setProperties() and readEntitySubclassDataFromBuffer() if something in the state has changed. - bool somethingChanged() const { return _somethingChanged; } - - virtual EntityPropertyFlags getEntityProperties(EncodeBitstreamParams& params) const = 0; virtual void appendSubclassData(OctreePacketData* packetData, EncodeBitstreamParams& params, @@ -97,10 +93,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) = 0; - -protected: - bool _somethingChanged = false; + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) = 0; }; #endif // hifi_PropertyGroup_h diff --git a/libraries/entities/src/SkyboxPropertyGroup.cpp b/libraries/entities/src/SkyboxPropertyGroup.cpp index 261e050387..d3ed82274a 100644 --- a/libraries/entities/src/SkyboxPropertyGroup.cpp +++ b/libraries/entities/src/SkyboxPropertyGroup.cpp @@ -56,6 +56,7 @@ bool SkyboxPropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlag int bytesRead = 0; bool overwriteLocalData = true; + bool somethingChanged = false; READ_ENTITY_PROPERTY(PROP_SKYBOX_COLOR, xColor, setColor); READ_ENTITY_PROPERTY(PROP_SKYBOX_URL, QString, setURL); @@ -121,7 +122,8 @@ void SkyboxPropertyGroup::appendSubclassData(OctreePacketData* packetData, Encod int SkyboxPropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/SkyboxPropertyGroup.h b/libraries/entities/src/SkyboxPropertyGroup.h index 995c87e1db..6e8d4340fe 100644 --- a/libraries/entities/src/SkyboxPropertyGroup.h +++ b/libraries/entities/src/SkyboxPropertyGroup.h @@ -67,7 +67,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); glm::vec3 getColorVec3() const { const quint8 MAX_COLOR = 255; diff --git a/libraries/entities/src/SphereEntityItem.cpp b/libraries/entities/src/SphereEntityItem.cpp index 1d0b2db5b3..3f41ef6d91 100644 --- a/libraries/entities/src/SphereEntityItem.cpp +++ b/libraries/entities/src/SphereEntityItem.cpp @@ -63,7 +63,8 @@ bool SphereEntityItem::setProperties(const EntityItemProperties& properties) { int SphereEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/SphereEntityItem.h b/libraries/entities/src/SphereEntityItem.h index 81a6cf704c..e1e31d4839 100644 --- a/libraries/entities/src/SphereEntityItem.h +++ b/libraries/entities/src/SphereEntityItem.h @@ -38,7 +38,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); const rgbColor& getColor() const { return _color; } xColor getXColor() const { xColor color = { _color[RED_INDEX], _color[GREEN_INDEX], _color[BLUE_INDEX] }; return color; } diff --git a/libraries/entities/src/StagePropertyGroup.cpp b/libraries/entities/src/StagePropertyGroup.cpp index a8b7705a73..bab68c7a4b 100644 --- a/libraries/entities/src/StagePropertyGroup.cpp +++ b/libraries/entities/src/StagePropertyGroup.cpp @@ -101,6 +101,7 @@ bool StagePropertyGroup::decodeFromEditPacket(EntityPropertyFlags& propertyFlags int bytesRead = 0; bool overwriteLocalData = true; + bool somethingChanged = false; READ_ENTITY_PROPERTY(PROP_STAGE_SUN_MODEL_ENABLED, bool, setSunModelEnabled); READ_ENTITY_PROPERTY(PROP_STAGE_LATITUDE, float, setLatitude); @@ -206,7 +207,8 @@ void StagePropertyGroup::appendSubclassData(OctreePacketData* packetData, Encode int StagePropertyGroup::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/StagePropertyGroup.h b/libraries/entities/src/StagePropertyGroup.h index 0f1cbf5a89..208eff479c 100644 --- a/libraries/entities/src/StagePropertyGroup.h +++ b/libraries/entities/src/StagePropertyGroup.h @@ -67,7 +67,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); static const bool DEFAULT_STAGE_SUN_MODEL_ENABLED; static const float DEFAULT_STAGE_LATITUDE; diff --git a/libraries/entities/src/TextEntityItem.cpp b/libraries/entities/src/TextEntityItem.cpp index dec4f4b4da..d19e3be4c9 100644 --- a/libraries/entities/src/TextEntityItem.cpp +++ b/libraries/entities/src/TextEntityItem.cpp @@ -84,7 +84,8 @@ bool TextEntityItem::setProperties(const EntityItemProperties& properties) { int TextEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/TextEntityItem.h b/libraries/entities/src/TextEntityItem.h index 0874651302..d205e9d01e 100644 --- a/libraries/entities/src/TextEntityItem.h +++ b/libraries/entities/src/TextEntityItem.h @@ -43,7 +43,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); virtual bool supportsDetailedRayIntersection() const { return true; } virtual bool findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction, diff --git a/libraries/entities/src/WebEntityItem.cpp b/libraries/entities/src/WebEntityItem.cpp index d6fc0e2148..496f2b412d 100644 --- a/libraries/entities/src/WebEntityItem.cpp +++ b/libraries/entities/src/WebEntityItem.cpp @@ -68,7 +68,8 @@ bool WebEntityItem::setProperties(const EntityItemProperties& properties) { int WebEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; diff --git a/libraries/entities/src/WebEntityItem.h b/libraries/entities/src/WebEntityItem.h index 7046051b8e..425d89de76 100644 --- a/libraries/entities/src/WebEntityItem.h +++ b/libraries/entities/src/WebEntityItem.h @@ -42,7 +42,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); virtual bool supportsDetailedRayIntersection() const { return true; } virtual bool findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction, diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 137ad55303..69357426ed 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -129,7 +129,8 @@ bool ZoneEntityItem::setProperties(const EntityItemProperties& properties) { int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData) { + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged) { int bytesRead = 0; const unsigned char* dataAt = data; @@ -139,7 +140,7 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_KEYLIGHT_DIRECTION, glm::vec3, setKeyLightDirection); int bytesFromStage = _stageProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData); + propertyFlags, overwriteLocalData, somethingChanged); bytesRead += bytesFromStage; dataAt += bytesFromStage; @@ -149,13 +150,13 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_BACKGROUND_MODE, BackgroundMode, setBackgroundMode); int bytesFromAtmosphere = _atmosphereProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData); + propertyFlags, overwriteLocalData, somethingChanged); bytesRead += bytesFromAtmosphere; dataAt += bytesFromAtmosphere; int bytesFromSkybox = _skyboxProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData); + propertyFlags, overwriteLocalData, somethingChanged); bytesRead += bytesFromSkybox; dataAt += bytesFromSkybox; diff --git a/libraries/entities/src/ZoneEntityItem.h b/libraries/entities/src/ZoneEntityItem.h index 96b0f9cbeb..a81cc97c2f 100644 --- a/libraries/entities/src/ZoneEntityItem.h +++ b/libraries/entities/src/ZoneEntityItem.h @@ -43,7 +43,8 @@ public: virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead, ReadBitstreamToTreeParams& args, - EntityPropertyFlags& propertyFlags, bool overwriteLocalData); + EntityPropertyFlags& propertyFlags, bool overwriteLocalData, + bool& somethingChanged); xColor getKeyLightColor() const { xColor color = { _keyLightColor[RED_INDEX], _keyLightColor[GREEN_INDEX], _keyLightColor[BLUE_INDEX] }; return color; } void setKeyLightColor(const xColor& value) {