From b3d6c18902286c324973e538d129bd66b3ac8dde Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 5 Dec 2013 13:54:46 -0800 Subject: [PATCH] reset buffer pointers in between sending to nodes --- assignment-client/src/avatars/AvatarMixer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/assignment-client/src/avatars/AvatarMixer.cpp b/assignment-client/src/avatars/AvatarMixer.cpp index 2673f78d0a..c1486a170d 100644 --- a/assignment-client/src/avatars/AvatarMixer.cpp +++ b/assignment-client/src/avatars/AvatarMixer.cpp @@ -58,8 +58,8 @@ void attachAvatarDataToNode(Node* newNode) { // determine which avatars are included in the packet stream // 4) we should optimize the avatar data format to be more compact (100 bytes is pretty wasteful). void broadcastAvatarData() { - unsigned char broadcastPacketBuffer[MAX_PACKET_SIZE]; - unsigned char avatarDataBuffer[MAX_PACKET_SIZE]; + static unsigned char broadcastPacketBuffer[MAX_PACKET_SIZE]; + static unsigned char avatarDataBuffer[MAX_PACKET_SIZE]; unsigned char* broadcastPacket = (unsigned char*)&broadcastPacketBuffer[0]; int numHeaderBytes = populateTypeAndVersion(broadcastPacket, PACKET_TYPE_BULK_AVATAR_DATA); unsigned char* currentBufferPosition = broadcastPacket + numHeaderBytes; @@ -70,6 +70,11 @@ void broadcastAvatarData() { for (NodeList::iterator node = nodeList->begin(); node != nodeList->end(); node++) { if (node->getLinkedData() && node->getType() == NODE_TYPE_AGENT && node->getActiveSocket()) { + + // reset packet pointers for this node + currentBufferPosition = broadcastPacket + numHeaderBytes; + packetLength = currentBufferPosition - broadcastPacket; + // this is an AGENT we have received head data from // send back a packet with other active node data to this node for (NodeList::iterator otherNode = nodeList->begin(); otherNode != nodeList->end(); otherNode++) {