diff --git a/interface/src/main.cpp b/interface/src/main.cpp index 7b80ce6e56..62fa6c77a3 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -74,6 +74,7 @@ #include #include #include +#include #include "ViewFrustum.h" @@ -1310,7 +1311,7 @@ void *networkReceive(void *args) AgentList::getInstance()->processBulkAgentData(&senderAddress, incomingPacket, bytesReceived, - (sizeof(float) * 3) + (sizeof(uint16_t) * 3)); + BYTES_PER_AVATAR); break; default: AgentList::getInstance()->processAgentData(&senderAddress, incomingPacket, bytesReceived); diff --git a/libraries/avatars/src/AvatarData.cpp b/libraries/avatars/src/AvatarData.cpp index fe36b44817..5e1fbf7828 100644 --- a/libraries/avatars/src/AvatarData.cpp +++ b/libraries/avatars/src/AvatarData.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include "AvatarData.h" @@ -23,7 +24,7 @@ int packFloatAngleToTwoByte(unsigned char* buffer, float angle) { return sizeof(uint16_t); } -int unpackFloatAngleFromTwoByte(uint16_t *byteAnglePointer, float *destinationPointer) { +int unpackFloatAngleFromTwoByte(uint16_t* byteAnglePointer, float* destinationPointer) { *destinationPointer = (*byteAnglePointer / std::numeric_limits::max()) * 360.0 - 180; return sizeof(uint16_t); } @@ -69,7 +70,6 @@ int AvatarData::getBroadcastData(unsigned char* destinationBuffer) { // called on the other agents - assigns it to my views of the others void AvatarData::parseData(unsigned char* sourceBuffer, int numBytes) { - // increment to push past the packet header sourceBuffer++; diff --git a/libraries/avatars/src/AvatarData.h b/libraries/avatars/src/AvatarData.h index b650a317f8..8a954d6736 100644 --- a/libraries/avatars/src/AvatarData.h +++ b/libraries/avatars/src/AvatarData.h @@ -15,6 +15,8 @@ #include +const int BYTES_PER_AVATAR = 30; + class AvatarData : public AgentData { public: AvatarData(); diff --git a/libraries/shared/src/AgentList.cpp b/libraries/shared/src/AgentList.cpp index 33716ec9f1..e4325df2a0 100644 --- a/libraries/shared/src/AgentList.cpp +++ b/libraries/shared/src/AgentList.cpp @@ -109,7 +109,7 @@ void AgentList::processBulkAgentData(sockaddr *senderAddress, unsigned char *pac unsigned char *startPosition = (unsigned char *)packetData; unsigned char *currentPosition = startPosition + 1; - unsigned char *packetHolder = new unsigned char[numBytesPerAgent + 1]; + unsigned char packetHolder[numBytesPerAgent + 1]; packetHolder[0] = PACKET_HEADER_HEAD_DATA; @@ -122,13 +122,12 @@ void AgentList::processBulkAgentData(sockaddr *senderAddress, unsigned char *pac int matchingAgentIndex = indexOfMatchingAgent(agentID); if (matchingAgentIndex >= 0) { + updateAgentWithData(&agents[matchingAgentIndex], packetHolder, numBytesPerAgent + 1); } currentPosition += numBytesPerAgent; } - - delete[] packetHolder; } void AgentList::updateAgentWithData(sockaddr *senderAddress, unsigned char *packetData, size_t dataBytes) { @@ -148,7 +147,7 @@ void AgentList::updateAgentWithData(Agent *agent, unsigned char *packetData, int linkedDataCreateCallback(agent); } } - + agent->getLinkedData()->parseData(packetData, dataBytes); }