From 25ed166f07631f2b6afdce3b2ed625b0cdb2f771 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Tue, 21 Aug 2018 11:49:48 -0700 Subject: [PATCH] fix logic for initial send of deleted trait instance --- libraries/avatars/src/ClientTraitsHandler.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/libraries/avatars/src/ClientTraitsHandler.cpp b/libraries/avatars/src/ClientTraitsHandler.cpp index 151b2a3809..c4073cb86a 100644 --- a/libraries/avatars/src/ClientTraitsHandler.cpp +++ b/libraries/avatars/src/ClientTraitsHandler.cpp @@ -83,10 +83,12 @@ void ClientTraitsHandler::sendChangedTraitsToMixer() { auto instancedIt = traitStatusesCopy.instancedCBegin(); while (instancedIt != traitStatusesCopy.instancedCEnd()) { for (auto& instanceIDValuePair : instancedIt->instances) { - if (_shouldPerformInitialSend || instanceIDValuePair.value == Updated) { - // this is a changed trait we need to send, ask the owning avatar to pack it + if ((_shouldPerformInitialSend && instanceIDValuePair.value != Deleted) + || instanceIDValuePair.value == Updated) { + // this is a changed trait we need to send or we haven't send out trait information yet + // ask the owning avatar to pack it _owningAvatar->packTraitInstance(instancedIt->traitType, instanceIDValuePair.id, *traitsPacketList); - } else if (instanceIDValuePair.value == Deleted) { + } else if (!_shouldPerformInitialSend && instanceIDValuePair.value == Deleted) { // pack delete for this trait instance AvatarTraits::packInstancedTraitDelete(instancedIt->traitType, instanceIDValuePair.id, *traitsPacketList);