From 1158ec8d50b290ab36afcc6be9faf6d87899e898 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 9 Aug 2018 22:06:28 -0700 Subject: [PATCH] improve change avoidance after avatar url override --- libraries/avatars/src/ClientTraitsHandler.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/avatars/src/ClientTraitsHandler.cpp b/libraries/avatars/src/ClientTraitsHandler.cpp index cf67304937..a31808a916 100644 --- a/libraries/avatars/src/ClientTraitsHandler.cpp +++ b/libraries/avatars/src/ClientTraitsHandler.cpp @@ -122,12 +122,19 @@ void ClientTraitsHandler::processTraitOverride(QSharedPointer m if (traitType == AvatarTraits::SkeletonModelURL && traitVersion == _currentSkeletonVersion && _traitStatuses[AvatarTraits::SkeletonModelURL] != Updated) { + // override the skeleton URL but do not mark the trait as having changed - // so that we don't unecessarily sent a new trait packet to the mixer with the overriden URL + // so that we don't unecessarily send a new trait packet to the mixer with the overriden URL auto encodedSkeletonURL = QUrl::fromEncoded(message->readWithoutCopy(traitBinarySize)); + + auto hasChangesBefore = _hasChangedTraits; + _owningAvatar->setSkeletonModelURL(encodedSkeletonURL); + // setSkeletonModelURL will flag us for changes to the SkeletonModelURL so we reset some state here to + // avoid unnecessarily sending the overriden skeleton model URL back to the mixer _traitStatuses.erase(AvatarTraits::SkeletonModelURL); + _hasChangedTraits = hasChangesBefore; } else { message->seek(message->getPosition() + traitBinarySize); }