From a05e493e0634dbb57b71fb75dfbddf11134609a0 Mon Sep 17 00:00:00 2001 From: luiscuenca Date: Wed, 3 Oct 2018 17:09:51 -0700 Subject: [PATCH] Long distance avatars should not be new --- interface/src/avatar/AvatarManager.cpp | 2 +- .../avatars-renderer/src/avatars-renderer/Avatar.cpp | 9 +++++++-- libraries/avatars-renderer/src/avatars-renderer/Avatar.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 661b13d6d1..c268561a8d 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -276,7 +276,7 @@ void AvatarManager::updateOtherAvatars(float deltaTime) { numAvatarsUpdated++; } auto transitStatus = avatar->_transit.update(deltaTime, avatar->_globalPosition, _transitConfig); - if (avatar->getIsNewAvatar() && transitStatus == AvatarTransit::Status::START_TRANSIT) { + if (avatar->getIsNewAvatar() && (transitStatus == AvatarTransit::Status::START_TRANSIT || transitStatus == AvatarTransit::Status::ABORT_TRANSIT)) { avatar->_transit.reset(); avatar->setIsNewAvatar(false); } diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp index fe3e1644c4..e3d6e707a2 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.cpp @@ -118,8 +118,13 @@ AvatarTransit::Status AvatarTransit::update(float deltaTime, const glm::vec3& av float oneFrameDistance = glm::length(currentPosition - _lastPosition); const float MAX_TRANSIT_DISTANCE = 30.0f; float scaledMaxTransitDistance = MAX_TRANSIT_DISTANCE * _scale; - if (oneFrameDistance > config._triggerDistance && oneFrameDistance < scaledMaxTransitDistance && !_isTransiting) { - start(deltaTime, _lastPosition, currentPosition, config); + if (oneFrameDistance > config._triggerDistance && !_isTransiting) { + if (oneFrameDistance < scaledMaxTransitDistance) { + start(deltaTime, _lastPosition, currentPosition, config); + } else { + _lastPosition = currentPosition; + return Status::ABORT_TRANSIT; + } } _lastPosition = currentPosition; _status = updatePosition(deltaTime); diff --git a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h index 7764d0ef54..1087f74c07 100644 --- a/libraries/avatars-renderer/src/avatars-renderer/Avatar.h +++ b/libraries/avatars-renderer/src/avatars-renderer/Avatar.h @@ -56,7 +56,8 @@ public: IDLE = 0, START_TRANSIT, TRANSITING, - END_TRANSIT + END_TRANSIT, + ABORT_TRANSIT }; enum EaseType {