From 597ff773e1ff065792d5b6beb168a1ea24a25528 Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Wed, 14 Nov 2018 18:00:56 -0800 Subject: [PATCH] fix for avatar flashing --- libraries/render/src/render/Item.h | 4 ++-- libraries/render/src/render/Scene.cpp | 7 ++++++- libraries/render/src/render/Scene.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libraries/render/src/render/Item.h b/libraries/render/src/render/Item.h index a87e2031f9..79557e3e44 100644 --- a/libraries/render/src/render/Item.h +++ b/libraries/render/src/render/Item.h @@ -480,8 +480,8 @@ public: protected: PayloadPointer _payload; ItemKey _key; - ItemCell _cell{ INVALID_CELL }; - Index _transitionId{ INVALID_INDEX }; + ItemCell _cell { INVALID_CELL }; + Index _transitionId { INVALID_INDEX }; friend class Scene; }; diff --git a/libraries/render/src/render/Scene.cpp b/libraries/render/src/render/Scene.cpp index 8d12cfae25..1850261c99 100644 --- a/libraries/render/src/render/Scene.cpp +++ b/libraries/render/src/render/Scene.cpp @@ -391,7 +391,12 @@ void Scene::transitionItems(const Transaction::TransitionAdds& transactions) { // Remove pre-existing transition, if need be if (!TransitionStage::isIndexInvalid(transitionId)) { - resetItemTransition(itemId); + // Only remove if: + // transitioning to something other than none or we're transitioning to none from ELEMENT_LEAVE_DOMAIN or USER_LEAVE_DOMAIN + const auto& oldTransitionType = transitionStage->getTransition(transitionId).eventType; + if (transitionType != Transition::NONE || !(oldTransitionType == Transition::ELEMENT_LEAVE_DOMAIN || oldTransitionType == Transition::USER_LEAVE_DOMAIN)) { + resetItemTransition(itemId); + } } // Add a new one. diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index 68acfe8d0f..e05cb04532 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -157,7 +157,7 @@ public: // This next call are NOT threadsafe, you have to call them from the correct thread to avoid any potential issues - // Access a particular item form its ID + // Access a particular item from its ID // WARNING, There is No check on the validity of the ID, so this could return a bad Item const Item& getItem(const ItemID& id) const { return _items[id]; }