From df1a84881197bba8fe9238c7edb80e06a87817ca Mon Sep 17 00:00:00 2001 From: SamGondelman Date: Mon, 12 Nov 2018 12:58:40 -0800 Subject: [PATCH] fix fade out --- .../src/avatars-renderer/Avatar.cpp | 20 +++++++++---------- libraries/render/src/render/Scene.cpp | 10 ++++++---- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index 23f3c36e68..712ff8c1a8 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -763,8 +763,7 @@ void Avatar::fadeOut(render::ScenePointer scene, KillAvatarReason reason) { if (reason == KillAvatarReason::YourAvatarEnteredTheirBubble) { transitionType = render::Transition::BUBBLE_ISECT_TRESPASSER; - } - else if (reason == KillAvatarReason::TheirAvatarEnteredYourBubble) { + } else if (reason == KillAvatarReason::TheirAvatarEnteredYourBubble) { transitionType = render::Transition::BUBBLE_ISECT_OWNER; } fade(transaction, transitionType); @@ -782,14 +781,15 @@ void Avatar::fade(render::Transaction& transaction, render::Transition::Type typ } void Avatar::updateFadingStatus() { - render::Transaction transaction; - transaction.queryTransitionOnItem(_renderItemID, [this](render::ItemID id, const render::Transition* transition) { - if (!transition || transition->isFinished) { - AbstractViewStateInterface::instance()->getMain3DScene()->resetItemTransition(id); - _isFading = false; - } - }); - AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); + if (_isFading) { + render::Transaction transaction; + transaction.queryTransitionOnItem(_renderItemID, [this](render::ItemID id, const render::Transition* transition) { + if (!transition || transition->isFinished) { + _isFading = false; + } + }); + AbstractViewStateInterface::instance()->getMain3DScene()->enqueueTransaction(transaction); + } } void Avatar::removeFromScene(AvatarSharedPointer self, const render::ScenePointer& scene, render::Transaction& transaction) { diff --git a/libraries/render/src/render/Scene.cpp b/libraries/render/src/render/Scene.cpp index 0b4ee2f11a..8d12cfae25 100644 --- a/libraries/render/src/render/Scene.cpp +++ b/libraries/render/src/render/Scene.cpp @@ -391,15 +391,17 @@ void Scene::transitionItems(const Transaction::TransitionAdds& transactions) { // Remove pre-existing transition, if need be if (!TransitionStage::isIndexInvalid(transitionId)) { - transitionStage->removeTransition(transitionId); - transitionId = TransitionStage::INVALID_INDEX; + resetItemTransition(itemId); } + // Add a new one. if (transitionType != Transition::NONE) { transitionId = transitionStage->addTransition(itemId, transitionType, boundId); - } - setItemTransition(itemId, transitionId); + if (!TransitionStage::isIndexInvalid(transitionId)) { + setItemTransition(itemId, transitionId); + } + } } }