From c2d410379fd5016fcbf9a12191ce16d16bd3138d Mon Sep 17 00:00:00 2001 From: Florian Sylvain Date: Sun, 11 May 2025 02:36:06 +0200 Subject: [PATCH] feat: debug toggle button (F3) --- src/Game.cpp | 27 +++++++++++++++------------ src/Game.hpp | 4 +++- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/src/Game.cpp b/src/Game.cpp index b673ca9..a1859c1 100644 --- a/src/Game.cpp +++ b/src/Game.cpp @@ -18,7 +18,6 @@ Game::Game() m_window.create(sf::VideoMode({Constants::WIDTH, Constants::HEIGHT}), "SFML Playground"); m_window.setVerticalSyncEnabled(true); - m_timeScale = 1.0f; m_objects.clear(); auto balls = BallFactory::generateBalls(); @@ -35,6 +34,10 @@ void Game::processKeyPressed(const sf::Event::KeyPressed &kP) { m_timeScale -= 0.25f; if (m_timeScale < 0.25f) m_timeScale = 0.25f; } + + if (kP.code == sf::Keyboard::Key::F3) { + m_toggleDebug = !m_toggleDebug; + } } void Game::processMousePressed(const sf::Event::MouseButtonPressed &mP) { @@ -67,20 +70,20 @@ void Game::render() { for (const auto &object : m_objects) { object->draw(m_window); - m_drawCallCount++; + ++m_drawCallCount; - auto *ball = dynamic_cast(object.get()); - if (!ball) continue; - - DebugDraw::addDirectionLine(m_debugLines, ball, m_window); - DebugDraw::addVelocityLine(m_debugLines, ball); + if (!m_toggleDebug) continue; + if (auto *ball = dynamic_cast(object.get())) { + DebugDraw::addDirectionLine(m_debugLines, ball, m_window); + DebugDraw::addVelocityLine(m_debugLines, ball); + } } - DebugDraw::drawBatchedLines(m_window, m_debugLines); - m_drawCallCount++; - - m_debugOverlay.update(m_drawCallCount, m_timeScale, m_window); - m_debugOverlay.draw(m_window); + if (m_toggleDebug) { + DebugDraw::drawBatchedLines(m_window, m_debugLines); + m_debugOverlay.update(m_drawCallCount + 2, m_timeScale, m_window); + m_debugOverlay.draw(m_window); + } m_window.display(); } diff --git a/src/Game.hpp b/src/Game.hpp index 7eca4a2..0df933a 100644 --- a/src/Game.hpp +++ b/src/Game.hpp @@ -19,7 +19,7 @@ class PhysicalObject; class Game { private: - float m_timeScale; + float m_timeScale = 1.0f; sf::RenderWindow m_window; std::vector> m_objects; sf::Clock m_clock; @@ -27,6 +27,8 @@ class Game { sf::VertexArray m_debugLines; int m_drawCallCount = 0; DebugOverlay m_debugOverlay; + bool m_toggleDebug = false; + void processKeyPressed(const sf::Event::KeyPressed& keyPressed); void processMousePressed(const sf::Event::MouseButtonPressed& mousePressed); void handleMouseClick(const sf::Vector2i& mousePos);