History

Merge pull request #21 from birarda/19170B

Leo's Avatar Mixer + birarda's AgentData updates

ZappoMan committed 13 years ago

Commit 002d3592 parents 0fff73e 2827a1a17 files · +503 −140Browse files

Showing the changes to interface/src/main.cpp (1 of 17 files). Show all

Unified · Split

interface/src/main.cpp+30−41
@@ -200,21 +200,6 @@ timeval timerStart, timerEnd; · 199 unmodified lines
200200 timeval lastTimeIdle;
201201 double elapsedTime;
202202
203−#ifdef MARKER_CAPTURE
204−
205− /*** Marker Capture ***/
206− #define MARKER_CAPTURE_INTERVAL 1
207− MarkerCapture marker_capturer(CV_CAP_ANY); // Create a new marker capturer, attached to any valid camera.
208− MarkerAcquisitionView marker_acq_view(&marker_capturer);
209− bool marker_capture_enabled = true;
210− bool marker_capture_display = true;
211− IplImage* marker_capture_frame;
212− IplImage* marker_capture_blob_frame;
213− pthread_mutex_t frame_lock;
214−
215−#endif
216−
217−
218203 // Every second, check the frame rates and other stuff
219204 void Timer(int extra)
220205 {
@@ -229,9 +214,6 @@ void Timer(int extra) · 8 unmodified lines
229214 glutTimerFunc(1000,Timer,0);
230215 gettimeofday(&timerStart, NULL);
231216
232− // Ping the agents we can see
233− agentList.pingAgents();
234−
235217 // if we haven't detected gyros, check for them now
236218 if (!serialPort.active) {
237219 serialPort.pair();
@@ -478,11 +460,12 @@ void simulateHead(float frametime) · 240 unmodified lines
478460 myAvatar.setAverageLoudness(averageLoudness);
479461 #endif
480462
481− // Send my streaming head data to agents that are nearby and need to see it!
482− const int MAX_BROADCAST_STRING = 200;
483− char broadcast_string[MAX_BROADCAST_STRING];
484− int broadcast_bytes = myAvatar.getBroadcastData(broadcast_string);
485− agentList.broadcastToAgents(broadcast_string, broadcast_bytes,AgentList::AGENTS_OF_TYPE_VOXEL_AND_INTERFACE);
463+ // Send my stream of head/hand data to the avatar mixer and voxel server
464+ char broadcastString[200];
465+ int broadcastBytes = myAvatar.getBroadcastData(broadcastString);
466+ const char broadcastReceivers[2] = {AGENT_TYPE_VOXEL, AGENT_TYPE_AVATAR_MIXER};
467+
468+ agentList.broadcastToAgents(broadcastString, broadcastBytes, broadcastReceivers, 2);
486469
487470 // If I'm in paint mode, send a voxel out to VOXEL server agents.
488471 if (::paintOn) {
@@ -501,8 +484,8 @@ void simulateHead(float frametime) · 12 unmodified lines
501484 ::paintingVoxel.y >= 0.0 && ::paintingVoxel.y <= 1.0 &&
502485 ::paintingVoxel.z >= 0.0 && ::paintingVoxel.z <= 1.0) {
503486
504− if (createVoxelEditMessage(PACKET_HEADER_SET_VOXEL,0,1,&::paintingVoxel,bufferOut,sizeOut)){
505− agentList.broadcastToAgents((char*)bufferOut, sizeOut,AgentList::AGENTS_OF_TYPE_VOXEL);
487+ if (createVoxelEditMessage(PACKET_HEADER_SET_VOXEL, 0, 1, &::paintingVoxel, bufferOut, sizeOut)){
488+ agentList.broadcastToAgents((char*)bufferOut, sizeOut, &AGENT_TYPE_VOXEL, 1);
506489 delete bufferOut;
507490 }
508491 }
@@ -1023,15 +1006,15 @@ void testPointToVoxel() · 514 unmodified lines
10231006 void sendVoxelServerEraseAll() {
10241007 char message[100];
10251008 sprintf(message,"%c%s",'Z',"erase all");
1026− int messageSize = strlen(message)+1;
1027− ::agentList.broadcastToAgents(message, messageSize,AgentList::AGENTS_OF_TYPE_VOXEL);
1009+ int messageSize = strlen(message) + 1;
1010+ ::agentList.broadcastToAgents(message, messageSize, &AGENT_TYPE_VOXEL, 1);
10281011 }
10291012
10301013 void sendVoxelServerAddScene() {
10311014 char message[100];
10321015 sprintf(message,"%c%s",'Z',"add scene");
1033− int messageSize = strlen(message)+1;
1034− ::agentList.broadcastToAgents(message, messageSize,AgentList::AGENTS_OF_TYPE_VOXEL);
1016+ int messageSize = strlen(message) + 1;
1017+ ::agentList.broadcastToAgents(message, messageSize, &AGENT_TYPE_VOXEL, 1);
10351018 }
10361019
10371020 void shiftPaintingColor()
@@ -1207,9 +1190,7 @@ void key(unsigned char k, int x, int y) · 169 unmodified lines
12071190 if (k == '.') addRandomSphere(wantColorRandomizer);
12081191 }
12091192
1210−//
12111193 // Receive packets from other agents/servers and decide what to do with them!
1212−//
12131194 void *networkReceive(void *args)
12141195 {
12151196 sockaddr senderAddress;
@@ -1221,19 +1202,26 @@ void *networkReceive(void *args) · 5 unmodified lines
12211202 packetCount++;
12221203 bytesCount += bytesReceived;
12231204
1224− if (incomingPacket[0] == PACKET_HEADER_TRANSMITTER_DATA) {
1225− // Pass everything but transmitter data to the agent list
1226− myAvatar.hand->processTransmitterData(incomingPacket, bytesReceived);
1227− } else if (incomingPacket[0] == PACKET_HEADER_VOXEL_DATA ||
1228− incomingPacket[0] == PACKET_HEADER_Z_COMMAND ||
1229− incomingPacket[0] == PACKET_HEADER_ERASE_VOXEL) {
1230− voxels.parseData(incomingPacket, bytesReceived);
1231− } else {
1232− agentList.processAgentData(&senderAddress, incomingPacket, bytesReceived);
1205+ switch (incomingPacket[0]) {
1206+ case PACKET_HEADER_TRANSMITTER_DATA:
1207+ myAvatar.hand->processTransmitterData(incomingPacket, bytesReceived);
1208+ break;
1209+ case PACKET_HEADER_VOXEL_DATA:
1210+ case PACKET_HEADER_Z_COMMAND:
1211+ case PACKET_HEADER_ERASE_VOXEL:
1212+ voxels.parseData(incomingPacket, bytesReceived);
1213+ break;
1214+ case PACKET_HEADER_HEAD_DATA:
1215+ agentList.processBulkAgentData(&senderAddress, incomingPacket, bytesReceived, sizeof(float) * 11);
1216+ break;
1217+ default:
1218+ agentList.processAgentData(&senderAddress, incomingPacket, bytesReceived);
1219+ break;
12331220 }
12341221 }
12351222 }
12361223
1224+ delete[] incomingPacket;
12371225 pthread_exit(0);
12381226 return NULL;
12391227 }
@@ -1401,9 +1389,10 @@ int main(int argc, const char * argv[]) · 161 unmodified lines
14011389 int wsaresult = WSAStartup( MAKEWORD(2,2), &WsaData );
14021390 #endif
14031391
1404− // start the thread which checks for silent agents
1392+ // start the agentList threads
14051393 agentList.startSilentAgentRemovalThread();
14061394 agentList.startDomainServerCheckInThread();
1395+ agentList.startPingUnknownAgentsThread();
14071396
14081397 glutInit(&argc, (char**)argv);
14091398 glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);