From 0445da3221bff643dcbd3e581118a8037f94930c Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Wed, 7 Aug 2013 14:42:57 -0700 Subject: [PATCH] Stop rotating more quickly, display avatar position and yaw stats --- interface/src/Application.cpp | 9 +++++++-- interface/src/avatar/Avatar.cpp | 8 +++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index f7423f73c7..d5292004c5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3307,7 +3307,7 @@ void Application::displayStats() { int statsVerticalOffset = 8; char stats[200]; - sprintf(stats, "%3.0f FPS, %d Pkts/sec, %3.2f Mbps", + sprintf(stats, "%3.0f FPS, %d Pkts/sec, %3.2f Mbps ", _fps, _packetsPerSecond, (float)_bytesPerSecond * 8.f / 1000000.f); drawtext(10, statsVerticalOffset + 15, 0.10f, 0, 1.0, 0, stats); @@ -3338,11 +3338,16 @@ void Application::displayStats() { pingVoxel = totalPingVoxel/voxelServerCount; } - char pingStats[200]; sprintf(pingStats, "Ping audio/avatar/voxel: %d / %d / %d avg %d max ", pingAudio, pingAvatar, pingVoxel, pingVoxelMax); drawtext(10, statsVerticalOffset + 35, 0.10f, 0, 1.0, 0, pingStats); } + + char avatarStats[200]; + glm::vec3 avatarPos = _myAvatar.getPosition(); + sprintf(avatarStats, "Avatar position: %.3f, %.3f, %.3f, yaw = %.2f", avatarPos.x, avatarPos.y, avatarPos.z, _myAvatar.getBodyYaw()); + drawtext(10, statsVerticalOffset + 55, 0.10f, 0, 1.0, 0, avatarStats); + std::stringstream voxelStats; voxelStats.precision(4); diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index c8f60ef51e..13899693aa 100755 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -31,7 +31,6 @@ const bool BALLS_ON = false; const bool USING_AVATAR_GRAVITY = true; const glm::vec3 DEFAULT_UP_DIRECTION (0.0f, 1.0f, 0.0f); const float YAW_MAG = 500.0; -const float BODY_SPIN_FRICTION = 5.0; const float MY_HAND_HOLDING_PULL = 0.2; const float YOUR_HAND_HOLDING_PULL = 1.0; const float BODY_SPRING_DEFAULT_TIGHTNESS = 1000.0f; @@ -659,12 +658,19 @@ void Avatar::simulate(float deltaTime, Transmitter* transmitter, float gyroCamer orientation = orientation * glm::quat(glm::radians( glm::vec3(_bodyPitchDelta, _bodyYawDelta, _bodyRollDelta) * deltaTime)); // decay body rotation momentum + + const float BODY_SPIN_FRICTION = 7.5f; float bodySpinMomentum = 1.0 - BODY_SPIN_FRICTION * deltaTime; if (bodySpinMomentum < 0.0f) { bodySpinMomentum = 0.0f; } _bodyPitchDelta *= bodySpinMomentum; _bodyYawDelta *= bodySpinMomentum; _bodyRollDelta *= bodySpinMomentum; + float MINIMUM_ROTATION_RATE = 2.0f; + if (fabs(_bodyYawDelta) < MINIMUM_ROTATION_RATE) { _bodyYawDelta = 0.f; } + if (fabs(_bodyRollDelta) < MINIMUM_ROTATION_RATE) { _bodyRollDelta = 0.f; } + if (fabs(_bodyPitchDelta) < MINIMUM_ROTATION_RATE) { _bodyPitchDelta = 0.f; } + const float MAX_STATIC_FRICTION_VELOCITY = 0.5f; const float STATIC_FRICTION_STRENGTH = _scale * 20.f; applyStaticFriction(deltaTime, _velocity, MAX_STATIC_FRICTION_VELOCITY, STATIC_FRICTION_STRENGTH);