From 6c5947d319a809cad6c20b8185316b3693a103ba Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Tue, 13 Jun 2017 14:43:59 -0700 Subject: [PATCH] Add periodic sending of avatar identity data to downstream nodes --- assignment-client/src/avatars/AvatarMixerSlave.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/assignment-client/src/avatars/AvatarMixerSlave.cpp b/assignment-client/src/avatars/AvatarMixerSlave.cpp index 581052cab3..17fadd8284 100644 --- a/assignment-client/src/avatars/AvatarMixerSlave.cpp +++ b/assignment-client/src/avatars/AvatarMixerSlave.cpp @@ -425,9 +425,13 @@ void AvatarMixerSlave::broadcastAvatarDataToAgent(const SharedNodePointer& node) _stats.packetSendingElapsedTime += (endPacketSending - startPacketSending); } +uint64_t REBROADCAST_IDENTITY_TO_DOWNSTREAM_EVERY_US = 5 * 1000 * 1000; + void AvatarMixerSlave::broadcastAvatarDataToDownstreamMixer(const SharedNodePointer& node) { _stats.nodesBroadcastedTo++; + AvatarMixerClientData* nodeData = reinterpret_cast(node->getLinkedData()); + // setup a PacketList for the replicated bulk avatar data auto avatarPacketList = NLPacketList::create(PacketType::ReplicatedBulkAvatarData); @@ -438,6 +442,13 @@ void AvatarMixerSlave::broadcastAvatarDataToDownstreamMixer(const SharedNodePoin if (agentNode->getType() == NodeType::Agent && agentNode->getLinkedData()) { const AvatarMixerClientData* agentNodeData = reinterpret_cast(agentNode->getLinkedData()); + auto now = usecTimestampNow(); + auto lastBroadcastTime = nodeData->getLastBroadcastTime(agentNode->getUUID()); + if (lastBroadcastTime <= agentNodeData->getIdentityChangeTimestamp() + || (now - lastBroadcastTime) >= REBROADCAST_IDENTITY_TO_DOWNSTREAM_EVERY_US) { + sendIdentityPacket(agentNodeData, node); + } + AvatarSharedPointer otherAvatar = agentNodeData->getAvatarSharedPointer(); quint64 startAvatarDataPacking = usecTimestampNow();