Files

45 lines
1.4 KiB
C++

// 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_;
Rendering::Renderer* renderer_;
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