From 40d27b4a07e8badc770d43ab2b920ecc9eb5f5ea Mon Sep 17 00:00:00 2001 From: Daniel Evans Date: Wed, 12 Oct 2016 00:29:24 +0100 Subject: [PATCH] Clean up debug view selection code --- rwgame/RWGame.cpp | 44 ++++++++++++++++++++++++++++---------------- rwgame/RWGame.hpp | 13 ++++++++++--- 2 files changed, 38 insertions(+), 19 deletions(-) diff --git a/rwgame/RWGame.cpp b/rwgame/RWGame.cpp index e35a4a7f..50c4703d 100644 --- a/rwgame/RWGame.cpp +++ b/rwgame/RWGame.cpp @@ -722,19 +722,24 @@ void RWGame::render(float alpha, float time) { auto rendertime = renderer->getRenderer()->popDebugGroup(); RW_PROFILE_BEGIN("debug"); - if (showDebugPaths) { - renderDebugPaths(time); - } - - if (showDebugStats) { - renderDebugStats(time, rendertime); - } - - if (showDebugPhysics) { - if (world) { - world->dynamicsWorld->debugDrawWorld(); - debug->flush(renderer); - } + switch (debugview_) { + case DebugViewMode::General: + renderDebugStats(time, rendertime); + break; + case DebugViewMode::Physics: + if (world) { + world->dynamicsWorld->debugDrawWorld(); + debug->flush(renderer); + } + break; + case DebugViewMode::Navigation: + renderDebugPaths(time); + break; + case DebugViewMode::Objects: + /// @todo + break; + default: + break; } RW_PROFILE_END(); @@ -960,6 +965,10 @@ void RWGame::renderProfile() { } void RWGame::globalKeyEvent(const SDL_Event& event) { + const auto toggle_debug = [&](DebugViewMode m) { + debugview_ = debugview_ == m ? DebugViewMode::Disabled : m; + }; + switch (event.key.keysym.sym) { case SDLK_LEFTBRACKET: world->offsetGameTime(-30); @@ -974,13 +983,16 @@ void RWGame::globalKeyEvent(const SDL_Event& event) { timescale *= 2.0f; break; case SDLK_F1: - showDebugStats = !showDebugStats; + toggle_debug(DebugViewMode::General); break; case SDLK_F2: - showDebugPaths = !showDebugPaths; + toggle_debug(DebugViewMode::Navigation); break; case SDLK_F3: - showDebugPhysics = !showDebugPhysics; + toggle_debug(DebugViewMode::Physics); + break; + case SDLK_F4: + toggle_debug(DebugViewMode::Objects); break; default: break; diff --git a/rwgame/RWGame.hpp b/rwgame/RWGame.hpp index 34bf8e4f..7a671905 100644 --- a/rwgame/RWGame.hpp +++ b/rwgame/RWGame.hpp @@ -33,9 +33,16 @@ class RWGame { bool inFocus = true; ViewCamera lastCam, nextCam; - bool showDebugStats = false; - bool showDebugPaths = false; - bool showDebugPhysics = false; + + enum class DebugViewMode { + Disabled, + General, + Physics, + Navigation, + Objects + }; + + DebugViewMode debugview_ = DebugViewMode::Disabled; int lastDraws; /// Number of draws issued for the last frame. std::string cheatInputWindow = std::string(32, ' ');