// debug_overlay.hpp - Overlay de debug (FPS + VSync) toggleable con F11 // © 2026 JailDesigner // // Sistema global propiedad del Director. Se actualiza y dibuja cada frame // después de la escena (queda on top). Arranca oculto sempre; F11 alterna // visibilidad durant l'execució. #pragma once #include "core/config/engine_config.hpp" #include "core/graphics/vector_text.hpp" #include "core/rendering/render_context.hpp" namespace System { class DebugOverlay { public: // El rendering_cfg ha de viure tant com l'overlay (el posseeix // el Director, que sobreviu a tots els sistemes). DebugOverlay(Rendering::Renderer* renderer, const Config::RenderingConfig& rendering_cfg); // Acumula FPS. Llamar una vez por frame con el delta del Director. void update(float delta_time); // Pinta el overlay si está visible. Posición esquina sup-izq. void draw() const; void toggle() { visible_ = !visible_; } [[nodiscard]] auto isVisible() const -> bool { return visible_; } private: Graphics::VectorText text_; const Config::RenderingConfig* rendering_cfg_; bool visible_{false}; // FPS counter — se actualiza cada FPS_UPDATE_INTERVAL segundos. float fps_accumulator_{0.0F}; int fps_frame_count_{0}; int fps_display_{0}; }; } // namespace System