Adding the change notifications

This commit is contained in:
Sam Cake 2017-05-05 00:11:22 -07:00
parent df2c5b8c23
commit db3d634840
3 changed files with 18 additions and 20 deletions

View file

@ -13,6 +13,8 @@
#include <gpu/Batch.h> #include <gpu/Batch.h>
#include <model/Stage.h>
#include <AbstractViewStateInterface.h> #include <AbstractViewStateInterface.h>
#include <DependencyManager.h> #include <DependencyManager.h>
#include <GeometryCache.h> #include <GeometryCache.h>
@ -69,8 +71,8 @@ bool RenderableZoneEntityItem::setProperties(const EntityItemProperties& propert
void RenderableZoneEntityItem::somethingChangedNotification() { void RenderableZoneEntityItem::somethingChangedNotification() {
DependencyManager::get<EntityTreeRenderer>()->updateZone(_id); DependencyManager::get<EntityTreeRenderer>()->updateZone(_id);
// A new way: // If graphics elements are changed, we need to update the render items
if (_keyLightPropertiesChanged || _backgroundPropertiesChanged) { if (_keyLightPropertiesChanged || _backgroundPropertiesChanged || _stagePropertiesChanged || _skyboxPropertiesChanged) {
notifyChangedRenderItem(); notifyChangedRenderItem();
} }
@ -337,15 +339,7 @@ void RenderableZoneEntityItem::updateKeyLightItemFromEntity(KeyLightPayload& key
light->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity()); light->setAmbientIntensity(this->getKeyLightProperties().getAmbientIntensity());
light->setDirection(this->getKeyLightProperties().getDirection()); light->setDirection(this->getKeyLightProperties().getDirection());
// light->setColor(toGlm(entity->getXColor()));
// float intensity = entity->getIntensity();//* entity->getFadingRatio();
// light->setIntensity(intensity);
light->setType(model::Light::SUN); light->setType(model::Light::SUN);
} }
void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) { void RenderableZoneEntityItem::sceneUpdateRenderItemFromEntity(render::Transaction& transaction) {

View file

@ -91,7 +91,7 @@ bool ZoneEntityItem::setSubClassProperties(const EntityItemProperties& propertie
_keyLightPropertiesChanged = _keyLightProperties.setProperties(properties); _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(shapeType, setShapeType);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(compoundShapeURL, setCompoundShapeURL); 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(ghostingAllowed, setGhostingAllowed);
SET_ENTITY_PROPERTY_FROM_PROPERTIES(filterURL, setFilterURL); 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; return somethingChanged;
@ -117,14 +117,14 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data,
const unsigned char* dataAt = data; const unsigned char* dataAt = data;
int bytesFromKeylight = _keyLightProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, int bytesFromKeylight = _keyLightProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args,
propertyFlags, overwriteLocalData, somethingChanged); propertyFlags, overwriteLocalData, _keyLightPropertiesChanged);
somethingChanged = somethingChanged || _keyLightPropertiesChanged;
bytesRead += bytesFromKeylight; bytesRead += bytesFromKeylight;
dataAt += bytesFromKeylight; dataAt += bytesFromKeylight;
int bytesFromStage = _stageProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, int bytesFromStage = _stageProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args,
propertyFlags, overwriteLocalData, somethingChanged); propertyFlags, overwriteLocalData, _stagePropertiesChanged);
somethingChanged = somethingChanged || _stagePropertiesChanged;
bytesRead += bytesFromStage; bytesRead += bytesFromStage;
dataAt += bytesFromStage; dataAt += bytesFromStage;
@ -133,7 +133,8 @@ int ZoneEntityItem::readEntitySubclassDataFromBuffer(const unsigned char* data,
READ_ENTITY_PROPERTY(PROP_BACKGROUND_MODE, BackgroundMode, setBackgroundMode); READ_ENTITY_PROPERTY(PROP_BACKGROUND_MODE, BackgroundMode, setBackgroundMode);
int bytesFromSkybox = _skyboxProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args, int bytesFromSkybox = _skyboxProperties.readEntitySubclassDataFromBuffer(dataAt, (bytesLeftToRead - bytesRead), args,
propertyFlags, overwriteLocalData, somethingChanged); propertyFlags, overwriteLocalData, _skyboxPropertiesChanged);
somethingChanged = somethingChanged || _skyboxPropertiesChanged;
bytesRead += bytesFromSkybox; bytesRead += bytesFromSkybox;
dataAt += bytesFromSkybox; dataAt += bytesFromSkybox;
@ -198,6 +199,8 @@ void ZoneEntityItem::somethingChangedNotification() {
withWriteLock([&] { withWriteLock([&] {
_keyLightPropertiesChanged = false; _keyLightPropertiesChanged = false;
_backgroundPropertiesChanged = false; _backgroundPropertiesChanged = false;
_stagePropertiesChanged = false;
_skyboxPropertiesChanged = false;
}); });
} }

View file

@ -70,7 +70,7 @@ public:
const KeyLightPropertyGroup& getKeyLightProperties() const { return _keyLightProperties; } 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; } BackgroundMode getBackgroundMode() const { return _backgroundMode; }
const SkyboxPropertyGroup& getSkyboxProperties() const { return _skyboxProperties; } const SkyboxPropertyGroup& getSkyboxProperties() const { return _skyboxProperties; }
@ -117,7 +117,8 @@ protected:
// Which is called after a setProperties() or a readEntitySubClassFromBUfferCall on the entity. // Which is called after a setProperties() or a readEntitySubClassFromBUfferCall on the entity.
bool _keyLightPropertiesChanged { false }; bool _keyLightPropertiesChanged { false };
bool _backgroundPropertiesChanged { false }; bool _backgroundPropertiesChanged { false };
bool _skyboxPropertiesChanged { false };
bool _stagePropertiesChanged { false };
static bool _drawZoneBoundaries; static bool _drawZoneBoundaries;
static bool _zonesArePickable; static bool _zonesArePickable;