From 5d67b9d384a584326a1db4f127bfca574ba1095b Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Wed, 28 Jan 2015 15:20:48 -0800 Subject: [PATCH] Request AvatarMixer --- gvr-interface/src/RenderingClient.cpp | 29 +++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/gvr-interface/src/RenderingClient.cpp b/gvr-interface/src/RenderingClient.cpp index 3113cbf838..dcd0911b1b 100644 --- a/gvr-interface/src/RenderingClient.cpp +++ b/gvr-interface/src/RenderingClient.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include "RenderingClient.h" @@ -26,7 +27,9 @@ RenderingClient::RenderingClient(QObject *parent) : _instance = this; // tell the NodeList which node types all rendering clients will want to know about - DependencyManager::get()->addSetOfNodeTypesToNodeInterestSet(NodeSet() << NodeType::AudioMixer); + DependencyManager::get()->addSetOfNodeTypesToNodeInterestSet(NodeSet() << NodeType::AudioMixer << NodeType::AvatarMixer); + + DependencyManager::set(); // get our audio client setup on its own thread QThread* audioThread = new QThread(this); @@ -56,6 +59,7 @@ RenderingClient::~RenderingClient() { } void RenderingClient::processVerifiedPacket(const HifiSockAddr& senderSockAddr, const QByteArray& incomingPacket) { + auto nodeList = DependencyManager::get(); PacketType incomingType = packetTypeForPacket(incomingPacket); // only process this packet if we have a match on the packet version switch (incomingType) { @@ -63,8 +67,7 @@ void RenderingClient::processVerifiedPacket(const HifiSockAddr& senderSockAddr, case PacketTypeAudioStreamStats: case PacketTypeMixedAudio: case PacketTypeSilentAudioFrame: { - auto nodeList = DependencyManager::get(); - + if (incomingType == PacketTypeAudioStreamStats) { QMetaObject::invokeMethod(DependencyManager::get().data(), "parseAudioStreamStatsPacket", Qt::QueuedConnection, @@ -89,6 +92,24 @@ void RenderingClient::processVerifiedPacket(const HifiSockAddr& senderSockAddr, break; } + case PacketTypeBulkAvatarData: + case PacketTypeKillAvatar: + case PacketTypeAvatarIdentity: + case PacketTypeAvatarBillboard: { + // update having heard from the avatar-mixer and record the bytes received + SharedNodePointer avatarMixer = nodeList->sendingNodeForPacket(incomingPacket); + + if (avatarMixer) { + avatarMixer->setLastHeardMicrostamp(usecTimestampNow()); + avatarMixer->recordBytesReceived(incomingPacket.size()); + + QMetaObject::invokeMethod(DependencyManager::get().data(), + "processAvatarMixerDatagram", + Q_ARG(const QByteArray&, incomingPacket), + Q_ARG(const QWeakPointer&, avatarMixer)); + } + break; + } default: Client::processVerifiedPacket(senderSockAddr, incomingPacket); break; @@ -124,4 +145,4 @@ void RenderingClient::goToLocation(const glm::vec3& newPosition, _position = shiftedPosition; -} \ No newline at end of file +}