Use eachMatchingNode instead of eachNode

This commit is contained in:
Simon Walton 2018-06-19 12:01:27 -07:00
parent 5bf075457c
commit c8c135a985

View file

@ -613,23 +613,36 @@ void AvatarMixer::handleAvatarIdentityRequestPacket(QSharedPointer<ReceivedMessa
if (!avatarID.isNull()) {
auto nodeList = DependencyManager::get<NodeList>();
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<AvatarMixerClientData*>(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<AvatarMixerClientData*>(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);
}
}
}
);
}
}