diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp index ad50c9f3cd..8ce1a2ef9a 100644 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp @@ -13,6 +13,8 @@ #include +#include + #include #include #include @@ -69,8 +71,8 @@ bool RenderableZoneEntityItem::setProperties(const EntityItemProperties& propert void RenderableZoneEntityItem::somethingChangedNotification() { DependencyManager::get()->updateZone(_id); - // A new way: - if (_keyLightPropertiesChanged || _backgroundPropertiesChanged) { + // If graphics elements are changed, we need to update the render items + if (_keyLightPropertiesChanged || _backgroundPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged) { notifyChangedRenderItem(); } @@ -337,15 +339,7 @@ void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& key light->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); light->setDirection(this->getKeyLightProperties().getDirection()); - - // light->setColor(toGlm(entity->getXColor())); - - // float intensity = entity->getIntensity();//* entity->getFadingRatio(); - // light->setIntensity(intensity); - - light->setType(model::Light::SUN); - } void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { diff --git a/libraries/entities/src/ZoneEntityItem.cpp b/libraries/entities/src/ZoneEntityItem.cpp index 364321ddf0..074437b6b2 100644 --- a/libraries/entities/src/ZoneEntityItem.cpp +++ b/libraries/entities/src/ZoneEntityItem.cpp @@ -91,7 +91,7 @@ bool ZoneEntityItem::setSubClassProperties(const EntityItemProperties& propertie _keyLightPropertiesChanged = _keyLightProperties.setProperties(properties); - bool somethingChangedInStage = _stageProperties.setProperties(properties); + _stagePropertiesChanged = _stageProperties.setProperties(properties); SET_ENTITY_PROPERTY_FROM_PROPERTIES(shapeType, setShapeType); SET_ENTITY_PROPERTY_FROM_PROPERTIES(compoundShapeURL, setCompoundShapeURL); @@ -101,9 +101,9 @@ bool ZoneEntityItem::setSubClassProperties(const EntityItemProperties& propertie SET_ENTITY_PROPERTY_FROM_PROPERTIES(ghostingAllowed, setGhostingAllowed); SET_ENTITY_PROPERTY_FROM_PROPERTIES(filterURL, setFilterURL); - bool somethingChangedInSkybox = _skyboxProperties.setProperties(properties); + _skyboxPropertiesChanged = _skyboxProperties.setProperties(properties); - somethingChanged = somethingChanged || _keyLightPropertiesChanged || somethingChangedInStage || somethingChangedInSkybox; + somethingChanged = somethingChanged || _keyLightPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged; return somethingChanged; @@ -117,14 +117,14 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, const unsigned char* dataAt = data; int bytesFromKeylight = _keyLightProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData, somethingChanged); - + propertyFlags, overwriteLocalData, _keyLightPropertiesChanged); + somethingChanged = somethingChanged || _keyLightPropertiesChanged; bytesRead += bytesFromKeylight; dataAt += bytesFromKeylight; int bytesFromStage = _stageProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData, somethingChanged); - + propertyFlags, overwriteLocalData, _stagePropertiesChanged); + somethingChanged = somethingChanged || _stagePropertiesChanged; bytesRead += bytesFromStage; dataAt += bytesFromStage; @@ -133,7 +133,8 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data, READ_ENTITY_PROPERTY(PROP_BACKGROUND_MODE, BackgroundMode, setBackgroundMode); int bytesFromSkybox = _skyboxProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, - propertyFlags, overwriteLocalData, somethingChanged); + propertyFlags, overwriteLocalData, _skyboxPropertiesChanged); + somethingChanged = somethingChanged || _skyboxPropertiesChanged; bytesRead += bytesFromSkybox; dataAt += bytesFromSkybox; @@ -198,6 +199,8 @@ void ZoneEntityItem::somethingChangedNotification() { withWriteLock([&] { _keyLightPropertiesChanged = false; _backgroundPropertiesChanged = false; + _stagePropertiesChanged = false; + _skyboxPropertiesChanged = false; }); } diff --git a/libraries/entities/src/ZoneEntityItem.h b/libraries/entities/src/ZoneEntityItem.h index 2ef0b33d51..bcb690f60e 100644 --- a/libraries/entities/src/ZoneEntityItem.h +++ b/libraries/entities/src/ZoneEntityItem.h @@ -70,7 +70,7 @@ public: const KeyLightPropertyGroup& getKeyLightProperties() const { return _keyLightProperties; } - void setBackgroundMode(BackgroundMode value) { _backgroundMode = value; } + void setBackgroundMode(BackgroundMode value) { _backgroundMode = value; _backgroundPropertiesChanged = true; } BackgroundMode getBackgroundMode() const { return _backgroundMode; } const SkyboxPropertyGroup& getSkyboxProperties() const { return _skyboxProperties; } @@ -117,7 +117,8 @@ protected: // Which is called after a setProperties() or a readEntitySubClassFromBUfferCall on the entity. bool _keyLightPropertiesChanged { false }; bool _backgroundPropertiesChanged { false }; - + bool _skyboxPropertiesChanged { false }; + bool _stagePropertiesChanged { false }; static bool _drawZoneBoundaries; static bool _zonesArePickable;