From 402ed4fb76532327066d2ea1448556d68c906e6e Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Mon, 27 Aug 2018 10:35:17 -0700 Subject: [PATCH] More shared pointer tweaks --- assignment-client/src/avatars/AvatarMixerSlave.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixerSlave.cpp b/assignment-client/src/avatars/AvatarMixerSlave.cpp index 3e9755ed39..367e991a04 100644 --- a/assignment-client/src/avatars/AvatarMixerSlave.cpp +++ b/assignment-client/src/avatars/AvatarMixerSlave.cpp @@ -288,7 +288,8 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) // setup list of AvatarData as well as maps to map betweeen the AvatarData and the original nodes std::vector avatarsToSort; - std::unordered_map avatarDataToNodes; + std::unordered_map avatarDataToNodes; + std::unordered_map avatarDataToNodesShared; std::unordered_map avatarEncodeTimes; std::for_each(_begin, _end, [&](const SharedNodePointer& otherNode) { // make sure this is an agent that we have avatar data for before considering it for inclusion @@ -298,7 +299,8 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) AvatarData* otherAvatar = otherNodeData->getAvatarSharedPointer().get(); avatarsToSort.push_back(otherAvatar); - avatarDataToNodes[otherAvatar] = otherNode; + avatarDataToNodes[otherAvatar] = otherNode.data(); + avatarDataToNodesShared[otherAvatar] = otherNode; QUuid id = otherAvatar->getSessionUUID(); avatarEncodeTimes[id] = nodeData->getLastOtherAvatarEncodeTime(id); } @@ -332,9 +334,9 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) AvatarData::_avatarSortCoefficientAge); // ignore or sort - const AvatarSharedPointer& thisAvatar = nodeData->getAvatarSharedPointer(); + const AvatarData* thisAvatar = nodeData->getAvatarSharedPointer().get(); for (const auto avatar : avatarsToSort) { - if (avatar == thisAvatar.get()) { + if (avatar == thisAvatar) { // don't echo updates to self continue; } @@ -380,7 +382,7 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) // Perform the collision check between the two bounding boxes if (nodeBox.touches(otherNodeBox)) { - nodeData->ignoreOther(node, avatarNode); + nodeData->ignoreOther(node, avatarDataToNodesShared[avatar]); shouldIgnore = !getsAnyIgnored; } }