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++;
}
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);
}

View file

@ -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);

View file

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