add _needsRenderUpdate flag

This commit is contained in:
SamGondelman 2018-01-08 15:25:16 -08:00
parent 7c17603f3e
commit 4f5727e6b0
2 changed files with 9 additions and 1 deletions

View file

@ -141,7 +141,10 @@ std::shared_ptr<T> make_renderer(const EntityItemPointer& entity) {
}
EntityRenderer::EntityRenderer(const EntityItemPointer& entity) : _entity(entity) {
connect(entity.get(), &EntityItem::requestRenderUpdate, this, &EntityRenderer::requestRenderUpdate);
connect(entity.get(), &EntityItem::requestRenderUpdate, this, [&] {
_needsRenderUpdate = true;
emit requestRenderUpdate();
});
}
EntityRenderer::~EntityRenderer() { }
@ -312,6 +315,9 @@ void EntityRenderer::setSubRenderItemIDs(const render::ItemIDs& ids) {
// Returns true if the item needs to have updateInscene called because of internal rendering
// changes (animation, fading, etc)
bool EntityRenderer::needsRenderUpdate() const {
if (_needsRenderUpdate) {
return true;
}
if (_prevIsTransparent != isTransparent()) {
return true;
}
@ -360,6 +366,7 @@ void EntityRenderer::doRenderUpdateSynchronous(const ScenePointer& scene, Transa
_moving = entity->isMovingRelativeToParent();
_visible = entity->getVisible();
_needsRenderUpdate = false;
});
}

View file

@ -125,6 +125,7 @@ protected:
bool _prevIsTransparent { false };
bool _visible { false };
bool _moving { false };
bool _needsRenderUpdate { false };
// Only touched on the rendering thread
bool _renderUpdateQueued{ false };