diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 4e8f8b932d..9658ed8908 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -613,23 +613,36 @@ void AvatarMixer::handleAvatarIdentityRequestPacket(QSharedPointer(); - nodeList->eachNode([&](SharedNodePointer node) { + nodeList->eachMatchingNode( + // Predicate: + [&](SharedNodePointer node) -> bool { QMutexLocker lock(&node->getMutex()); if (node->getType() == NodeType::Agent && node->getLinkedData()) { AvatarMixerClientData* avatarClientData = dynamic_cast(node->getLinkedData()); if (avatarClientData) { const AvatarData& avatarData = avatarClientData->getAvatar(); if (avatarData.getID() == avatarID) { - QByteArray serializedAvatar = avatarData.identityByteArray(); - auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true); - identityPackets->write(serializedAvatar); - nodeList->sendPacketList(std::move(identityPackets), *senderNode); + return true; } } } + return false; + }, + // Action: + [&](SharedNodePointer node) { + QMutexLocker lock(&node->getMutex()); + AvatarMixerClientData* avatarClientData = dynamic_cast(node->getLinkedData()); + if (avatarClientData) { + const AvatarData& avatarData = avatarClientData->getAvatar(); + if (avatarData.getID() == avatarID) { + QByteArray serializedAvatar = avatarData.identityByteArray(); + auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true); + identityPackets->write(serializedAvatar); + nodeList->sendPacketList(std::move(identityPackets), *senderNode); + } + } } ); - } }