Long distance avatars should not be new

This commit is contained in:
luiscuenca 2018-10-03 17:09:51 -07:00
parent bb98457d09
commit a05e493e06
3 changed files with 10 additions and 4 deletions

View file

@ -276,7 +276,7 @@ void AvatarManager::updateOtherAvatars(float deltaTime) {
numAvatarsUpdated++; numAvatarsUpdated++;
} }
auto transitStatus = avatar->_transit.update(deltaTime, avatar->_globalPosition, _transitConfig); 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->_transit.reset();
avatar->setIsNewAvatar(false); avatar->setIsNewAvatar(false);
} }

View file

@ -118,8 +118,13 @@ AvatarTransit::Status AvatarTransit::update(float deltaTime, const glm::vec3& av
float oneFrameDistance = glm::length(currentPosition - _lastPosition); float oneFrameDistance = glm::length(currentPosition - _lastPosition);
const float MAX_TRANSIT_DISTANCE = 30.0f; const float MAX_TRANSIT_DISTANCE = 30.0f;
float scaledMaxTransitDistance = MAX_TRANSIT_DISTANCE * _scale; float scaledMaxTransitDistance = MAX_TRANSIT_DISTANCE * _scale;
if (oneFrameDistance > config._triggerDistance && oneFrameDistance < scaledMaxTransitDistance && !_isTransiting) { if (oneFrameDistance > config._triggerDistance && !_isTransiting) {
if (oneFrameDistance < scaledMaxTransitDistance) {
start(deltaTime, _lastPosition, currentPosition, config); start(deltaTime, _lastPosition, currentPosition, config);
} else {
_lastPosition = currentPosition;
return Status::ABORT_TRANSIT;
}
} }
_lastPosition = currentPosition; _lastPosition = currentPosition;
_status = updatePosition(deltaTime); _status = updatePosition(deltaTime);

View file

@ -56,7 +56,8 @@ public:
IDLE = 0, IDLE = 0,
START_TRANSIT, START_TRANSIT,
TRANSITING, TRANSITING,
END_TRANSIT END_TRANSIT,
ABORT_TRANSIT
}; };
enum EaseType { enum EaseType {