1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-15 15:02:34 +02:00

Clean up debug view selection code

This commit is contained in:
Daniel Evans 2016-10-12 00:29:24 +01:00
parent 02efff6f8f
commit 40d27b4a07
2 changed files with 38 additions and 19 deletions

View File

@ -722,19 +722,24 @@ void RWGame::render(float alpha, float time) {
auto rendertime = renderer->getRenderer()->popDebugGroup(); auto rendertime = renderer->getRenderer()->popDebugGroup();
RW_PROFILE_BEGIN("debug"); RW_PROFILE_BEGIN("debug");
if (showDebugPaths) { switch (debugview_) {
renderDebugPaths(time); case DebugViewMode::General:
} renderDebugStats(time, rendertime);
break;
if (showDebugStats) { case DebugViewMode::Physics:
renderDebugStats(time, rendertime); if (world) {
} world->dynamicsWorld->debugDrawWorld();
debug->flush(renderer);
if (showDebugPhysics) { }
if (world) { break;
world->dynamicsWorld->debugDrawWorld(); case DebugViewMode::Navigation:
debug->flush(renderer); renderDebugPaths(time);
} break;
case DebugViewMode::Objects:
/// @todo
break;
default:
break;
} }
RW_PROFILE_END(); RW_PROFILE_END();
@ -960,6 +965,10 @@ void RWGame::renderProfile() {
} }
void RWGame::globalKeyEvent(const SDL_Event& event) { void RWGame::globalKeyEvent(const SDL_Event& event) {
const auto toggle_debug = [&](DebugViewMode m) {
debugview_ = debugview_ == m ? DebugViewMode::Disabled : m;
};
switch (event.key.keysym.sym) { switch (event.key.keysym.sym) {
case SDLK_LEFTBRACKET: case SDLK_LEFTBRACKET:
world->offsetGameTime(-30); world->offsetGameTime(-30);
@ -974,13 +983,16 @@ void RWGame::globalKeyEvent(const SDL_Event& event) {
timescale *= 2.0f; timescale *= 2.0f;
break; break;
case SDLK_F1: case SDLK_F1:
showDebugStats = !showDebugStats; toggle_debug(DebugViewMode::General);
break; break;
case SDLK_F2: case SDLK_F2:
showDebugPaths = !showDebugPaths; toggle_debug(DebugViewMode::Navigation);
break; break;
case SDLK_F3: case SDLK_F3:
showDebugPhysics = !showDebugPhysics; toggle_debug(DebugViewMode::Physics);
break;
case SDLK_F4:
toggle_debug(DebugViewMode::Objects);
break; break;
default: default:
break; break;

View File

@ -33,9 +33,16 @@ class RWGame {
bool inFocus = true; bool inFocus = true;
ViewCamera lastCam, nextCam; ViewCamera lastCam, nextCam;
bool showDebugStats = false;
bool showDebugPaths = false; enum class DebugViewMode {
bool showDebugPhysics = false; Disabled,
General,
Physics,
Navigation,
Objects
};
DebugViewMode debugview_ = DebugViewMode::Disabled;
int lastDraws; /// Number of draws issued for the last frame. int lastDraws; /// Number of draws issued for the last frame.
std::string cheatInputWindow = std::string(32, ' '); std::string cheatInputWindow = std::string(32, ' ');