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()) { if (!avatarID.isNull()) {
auto nodeList = DependencyManager::get<NodeList>(); auto nodeList = DependencyManager::get<NodeList>();
nodeList->eachNode([&](SharedNodePointer node) { nodeList->eachMatchingNode(
// Predicate:
[&](SharedNodePointer node) -> bool {
QMutexLocker lock(&node->getMutex()); QMutexLocker lock(&node->getMutex());
if (node->getType() == NodeType::Agent && node->getLinkedData()) { if (node->getType() == NodeType::Agent && node->getLinkedData()) {
AvatarMixerClientData* avatarClientData = dynamic_cast<AvatarMixerClientData*>(node->getLinkedData()); AvatarMixerClientData* avatarClientData = dynamic_cast<AvatarMixerClientData*>(node->getLinkedData());
if (avatarClientData) { if (avatarClientData) {
const AvatarData& avatarData = avatarClientData->getAvatar(); const AvatarData& avatarData = avatarClientData->getAvatar();
if (avatarData.getID() == avatarID) { if (avatarData.getID() == avatarID) {
QByteArray serializedAvatar = avatarData.identityByteArray(); return true;
auto identityPackets = NLPacketList::create(PacketType::AvatarIdentity, QByteArray(), true, true);
identityPackets->write(serializedAvatar);
nodeList->sendPacketList(std::move(identityPackets), *senderNode);
} }
} }
} }
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);
}
}
} }
); );
} }
} }