mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 06:53:01 +02:00
Sending packets to agents
This commit is contained in:
parent
e0c31d68d1
commit
64e563ef7c
1 changed files with 35 additions and 12 deletions
|
@ -32,6 +32,7 @@
|
||||||
#include "avatar.h"
|
#include "avatar.h"
|
||||||
|
|
||||||
std::vector<AvatarAgent> *avatarAgentList = new std::vector<AvatarAgent>;
|
std::vector<AvatarAgent> *avatarAgentList = new std::vector<AvatarAgent>;
|
||||||
|
UDPSocket *avatarMixerSocket = new UDPSocket(AVATAR_LISTEN_PORT);
|
||||||
|
|
||||||
AvatarAgent *findAvatarAgentBySocket(sockaddr *activeSocket) {
|
AvatarAgent *findAvatarAgentBySocket(sockaddr *activeSocket) {
|
||||||
|
|
||||||
|
@ -173,17 +174,17 @@ unsigned char *addAgentToBroadcastPacket(unsigned char *currentPosition, AvatarA
|
||||||
|
|
||||||
currentPosition += packSocket(currentPosition, agentToAdd->getActiveSocket());
|
currentPosition += packSocket(currentPosition, agentToAdd->getActiveSocket());
|
||||||
|
|
||||||
sprintf((char *)packetData, packetFormat, agentToAdd->getPitch(),
|
sprintf((char *)packetData, PACKET_FORMAT, agentToAdd->getPitch(),
|
||||||
agentToAdd->getYaw(),
|
agentToAdd->getYaw(),
|
||||||
agentToAdd->getRoll(),
|
agentToAdd->getRoll(),
|
||||||
agentToAdd->getHeadPosition()['x'],
|
agentToAdd->getHeadPositionX(),
|
||||||
agentToAdd->getHeadPosition()['y'],
|
agentToAdd->getHeadPositionY(),
|
||||||
agentToAdd->getHeadPosition()['z'],
|
agentToAdd->getHeadPositionZ(),
|
||||||
agentToAdd->getLoudness(),
|
agentToAdd->getLoudness(),
|
||||||
agentToAdd->getAverageLoudness(),
|
agentToAdd->getAverageLoudness(),
|
||||||
agentToAdd->getHandPosition()['x'],
|
agentToAdd->getHandPositionX(),
|
||||||
agentToAdd->getHandPosition()['y'],
|
agentToAdd->getHandPositionY(),
|
||||||
agentToAdd->getHandPosition()['z']);
|
agentToAdd->getHandPositionZ());
|
||||||
|
|
||||||
memcpy(currentPosition, packetData, strlen((const char*)packetData));
|
memcpy(currentPosition, packetData, strlen((const char*)packetData));
|
||||||
currentPosition += strlen((const char*)packetData);
|
currentPosition += strlen((const char*)packetData);
|
||||||
|
@ -205,6 +206,21 @@ void *sendAvatarData(void *args) {
|
||||||
startPointer = currentBufferPosition;
|
startPointer = currentBufferPosition;
|
||||||
|
|
||||||
|
|
||||||
|
for (std::vector<AvatarAgent>::iterator avatarAgent = avatarAgentList->begin();
|
||||||
|
avatarAgent != avatarAgentList->end();
|
||||||
|
avatarAgent++) {
|
||||||
|
|
||||||
|
addAgentToBroadcastPacket(currentBufferPosition, &*avatarAgent);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (std::vector<AvatarAgent>::iterator avatarAgent = avatarAgentList->begin();
|
||||||
|
avatarAgent != avatarAgentList->end();
|
||||||
|
avatarAgent++) {
|
||||||
|
|
||||||
|
avatarMixerSocket->send(avatarAgent->getActiveSocket(), broadcastPacket, strlen((const char *)broadcastPacket));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
double usecToSleep = usecTimestamp(&startTime) + (BROADCAST_INTERVAL * 10000000) - usecTimestampNow();
|
double usecToSleep = usecTimestamp(&startTime) + (BROADCAST_INTERVAL * 10000000) - usecTimestampNow();
|
||||||
usleep(usecToSleep);
|
usleep(usecToSleep);
|
||||||
|
@ -222,7 +238,6 @@ int main(int argc, char* argv[])
|
||||||
char *packetData = new char[MAX_PACKET_SIZE];
|
char *packetData = new char[MAX_PACKET_SIZE];
|
||||||
ssize_t receivedBytes = 0;
|
ssize_t receivedBytes = 0;
|
||||||
|
|
||||||
UDPSocket *avatarMixerSocket = new UDPSocket(AVATAR_LISTEN_PORT);
|
|
||||||
AvatarAgent *matchingAgent = NULL;
|
AvatarAgent *matchingAgent = NULL;
|
||||||
|
|
||||||
float *pitch;
|
float *pitch;
|
||||||
|
@ -258,7 +273,15 @@ int main(int argc, char* argv[])
|
||||||
matchingAgent = findAvatarAgentBySocket(agentAddress);
|
matchingAgent = findAvatarAgentBySocket(agentAddress);
|
||||||
|
|
||||||
if (matchingAgent) {
|
if (matchingAgent) {
|
||||||
|
|
||||||
// We already have this agent on our list, just modify positional data
|
// We already have this agent on our list, just modify positional data
|
||||||
|
matchingAgent->setPitch(*pitch);
|
||||||
|
matchingAgent->setYaw(*yaw);
|
||||||
|
matchingAgent->setRoll(*roll);
|
||||||
|
matchingAgent->setHeadPosition(*headPositionX, *headPositionY, *headPositionZ);
|
||||||
|
matchingAgent->setLoudness(*loudness);
|
||||||
|
matchingAgent->setAverageLoudness(*averageLoudness);
|
||||||
|
matchingAgent->setHandPosition(*handPositionX, *handPositionY, *handPositionZ);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
// This is a new agent, we need to add to the list
|
// This is a new agent, we need to add to the list
|
||||||
|
|
Loading…
Reference in a new issue