mirror of
https://github.com/overte-org/overte.git
synced 2025-04-21 18:44:00 +02:00
Changes to interface side of code
This commit is contained in:
parent
6bff444f15
commit
1cf75b37f3
3 changed files with 27 additions and 3 deletions
|
@ -532,11 +532,12 @@ void simulateHead(float frametime)
|
|||
myHead.setAverageLoudness(averageLoudness);
|
||||
#endif
|
||||
|
||||
// Send my streaming head data to agents that are nearby and need to see it!
|
||||
// Send my stream of head/hand data to the avatar mixer
|
||||
const int MAX_BROADCAST_STRING = 200;
|
||||
const int AVATAR_SERVER_PORT = 55444;
|
||||
char broadcast_string[MAX_BROADCAST_STRING];
|
||||
int broadcast_bytes = myHead.getBroadcastData(broadcast_string);
|
||||
agentList.broadcastToAgents(broadcast_string, broadcast_bytes,AgentList::AGENTS_OF_TYPE_VOXEL_AND_INTERFACE);
|
||||
agentList.getAgentSocket().send(AVATAR_SERVER_IP, AVATAR_SERVER_PORT, broadcast_string, broadcast_bytes);
|
||||
|
||||
// If I'm in paint mode, send a voxel out to VOXEL server agents.
|
||||
if (::paintOn) {
|
||||
|
|
|
@ -24,7 +24,9 @@
|
|||
const char * SOLO_AGENT_TYPES_STRING = "MV";
|
||||
char DOMAIN_HOSTNAME[] = "highfidelity.below92.com";
|
||||
char DOMAIN_IP[100] = ""; // IP Address will be re-set by lookup on startup
|
||||
char AVATAR_SERVER_IP[100] = "";
|
||||
const int DOMAINSERVER_PORT = 40102;
|
||||
const int AVATAR_SERVER_PORT = 55444;
|
||||
|
||||
bool silentAgentThreadStopFlag = false;
|
||||
bool domainServerCheckinStopFlag = false;
|
||||
|
@ -77,7 +79,7 @@ void AgentList::processAgentData(sockaddr *senderAddress, void *packetData, size
|
|||
}
|
||||
case PACKET_HEADER_HEAD_DATA: {
|
||||
// head data from another agent
|
||||
updateAgentWithData(senderAddress, packetData, dataBytes);
|
||||
updateDataForAllAgents(senderAddress, (unsigned char *)packetData, dataBytes);
|
||||
break;
|
||||
}
|
||||
case PACKET_HEADER_PING: {
|
||||
|
@ -95,6 +97,25 @@ void AgentList::processAgentData(sockaddr *senderAddress, void *packetData, size
|
|||
}
|
||||
}
|
||||
|
||||
void AgentList::updateDataForAllAgents(sockaddr *senderAddress, unsigned char *packetData, size_t dataBytes) {
|
||||
unsigned char *currentPosition = packetData + 1;
|
||||
unsigned char *startPosition = packetData;
|
||||
unsigned char *packetHolder = new unsigned char[(sizeof(float) * 11) + 1];
|
||||
packetHolder[0] = *(unsigned char *)PACKET_HEADER_HEAD_DATA;
|
||||
packetHolder++;
|
||||
uint16_t agentId;
|
||||
sockaddr_in *agentActiveSocket = new sockaddr_in;
|
||||
agentActiveSocket->sin_family = AF_INET;
|
||||
|
||||
while ((currentPosition - startPosition) < dataBytes) {
|
||||
currentPosition += unpackAgentId(currentPosition, &agentId);
|
||||
currentPosition += unpackSocket(currentPosition, (sockaddr *)&agentActiveSocket);
|
||||
memcpy(packetHolder, currentPosition, sizeof(float) * 11);
|
||||
currentPosition += sizeof(float) * 11;
|
||||
updateAgentWithData((sockaddr *)agentActiveSocket, packetHolder, (sizeof(float) * 11) + 1);
|
||||
}
|
||||
}
|
||||
|
||||
void AgentList::updateAgentWithData(sockaddr *senderAddress, void *packetData, size_t dataBytes) {
|
||||
// find the agent by the sockaddr
|
||||
int agentIndex = indexOfMatchingAgent(senderAddress);
|
||||
|
@ -327,6 +348,7 @@ void *checkInWithDomainServer(void *args) {
|
|||
sockaddr_in tempAddress;
|
||||
memcpy(&tempAddress.sin_addr, pHostInfo->h_addr_list[0], pHostInfo->h_length);
|
||||
strcpy(DOMAIN_IP, inet_ntoa(tempAddress.sin_addr));
|
||||
strcpy(AVATAR_SERVER_IP, inet_ntoa(tempAddress.sin_addr));
|
||||
printf("Domain server %s: \n", DOMAIN_HOSTNAME);
|
||||
|
||||
} else {
|
||||
|
|
|
@ -56,6 +56,7 @@ public:
|
|||
void increaseAgentId();
|
||||
bool addOrUpdateAgent(sockaddr *publicSocket, sockaddr *localSocket, char agentType, uint16_t agentId);
|
||||
void processAgentData(sockaddr *senderAddress, void *packetData, size_t dataBytes);
|
||||
void updateDataForAllAgents(sockaddr *senderAddress, unsigned char *packetData, size_t dataBytes);
|
||||
void updateAgentWithData(sockaddr *senderAddress, void *packetData, size_t dataBytes);
|
||||
void broadcastToAgents(char *broadcastData, size_t dataBytes, const char* agentTypes);
|
||||
void pingAgents();
|
||||
|
|
Loading…
Reference in a new issue