From 27860b1f07621dffd67a89d0471c54f01ccffae6 Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Fri, 15 Feb 2013 12:53:21 -0800 Subject: [PATCH] Added stats display of agent ping times and various agent functions to get the data. --- interface/src/Agent.cpp | 15 +++++++++++++++ interface/src/Agent.h | 3 +++ interface/src/Head.cpp | 4 ++-- interface/src/main.cpp | 16 ++++++++++++++-- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/interface/src/Agent.cpp b/interface/src/Agent.cpp index 41db4fcdc9..f92fffed30 100644 --- a/interface/src/Agent.cpp +++ b/interface/src/Agent.cpp @@ -27,6 +27,21 @@ struct AgentList { int num_agents = 0; + +char * getAgentAddress(int agentNumber) { + if (agentNumber < getAgentCount()) return agents[agentNumber].address; + else return NULL; +} + +int getAgentCount() { + return num_agents; +} + +int getAgentPing(int agentNumber) { + if (agentNumber < getAgentCount()) return agents[agentNumber].pingMsecs; + else return -1; +} + // // Process an incoming domainserver packet telling you about other nearby agents, // and returns the number of agents that were reported. diff --git a/interface/src/Agent.h b/interface/src/Agent.h index c328a8a376..1df03dd017 100644 --- a/interface/src/Agent.h +++ b/interface/src/Agent.h @@ -29,5 +29,8 @@ void setAgentPing(char * address, unsigned short port); void update_agent(char * address, unsigned short port, char * data, int length); void render_agents(int renderSelf, float * myLocation); void kludgyMixerUpdate(Audio audio); +int getAgentPing(int agentNumber); +int getAgentCount(); +char * getAgentAddress(int agentNumber); #endif diff --git a/interface/src/Head.cpp b/interface/src/Head.cpp index b8f2681244..e179db939c 100644 --- a/interface/src/Head.cpp +++ b/interface/src/Head.cpp @@ -216,14 +216,14 @@ void Head::render(int faceToFace, float * myLocation) //std::cout << distanceToCamera << "\n"; // Don't render a head if it is really close to your location, because that is your own head! - if (distanceToCamera > 0.1) { + if ((distanceToCamera > 0.1) || faceToFace) { glEnable(GL_DEPTH_TEST); glPushMatrix(); glScalef(scale, scale, scale); glTranslatef(leanSideways, 0.f, leanForward); - glRotatef(Yaw/2.0, 0, 1, 0); + glRotatef(Yaw/2.0, 0, 1, 0); glRotatef(Pitch/2.0, 1, 0, 0); glRotatef(Roll/2.0, 0, 0, 1); diff --git a/interface/src/main.cpp b/interface/src/main.cpp index fcf424cc0b..09bc44d077 100644 --- a/interface/src/main.cpp +++ b/interface/src/main.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -265,21 +266,31 @@ void display_stats(void) drawtext(10, 15, 0.10, 0, 1.0, 0, legend); char stats[200]; - sprintf(stats, "FPS = %3.0f, Pkts/s = %d, Bytes/s = %d", + sprintf(stats, "FPS = %3.0f Pkts/s = %d Bytes/s = %d ", FPS, packets_per_second, bytes_per_second); drawtext(10, 30, 0.10, 0, 1.0, 0, stats); if (serial_on) { sprintf(stats, "ADC samples = %d, LED = %d", serialPort.getNumSamples(), serialPort.getLED()); - drawtext(500, 30, 0.10, 0, 1.0, 0, stats); + drawtext(300, 30, 0.10, 0, 1.0, 0, stats); } + // Output the ping times to the various agents + std::stringstream pingTimes; + pingTimes << "Agent Pings, msecs:"; + for (int i = 0; i < getAgentCount(); i++) { + pingTimes << " " << getAgentAddress(i) << ": " << getAgentPing(i); + } + drawtext(10,50,0.10, 0, 1.0, 0, (char *)pingTimes.str().c_str()); + + /* char adc[200]; sprintf(adc, "location = %3.1f,%3.1f,%3.1f, angle_to(origin) = %3.1f, head yaw = %3.1f, render_yaw = %3.1f", -location[0], -location[1], -location[2], angle_to(myHead.getPos()*-1.f, glm::vec3(0,0,0), myHead.getRenderYaw(), myHead.getYaw()), myHead.getYaw(), myHead.getRenderYaw()); drawtext(10, 50, 0.10, 0, 1.0, 0, adc); + */ } @@ -644,6 +655,7 @@ void display(void) if ((render_test_spot > WIDTH-100) || (render_test_spot < 100)) render_test_direction *= -1.0; } + // Show detected levels from the serial I/O ADC channel sensors if (display_levels) serialPort.renderLevels(WIDTH,HEIGHT);