#pragma once #include #include "core/Constants.hpp" namespace tahgibu { // Un frame de la animación. Solo guarda cuánto dura: usa los FPS base del // proyecto, salvo que tenga FPS propios (override). class Frame { public: // Fuerza el valor al rango [kMinFps, kMaxFps]. Valores no finitos (NaN, inf) // devuelven kDefaultFps. static float clampFps(float fps) noexcept; bool hasFpsOverride() const noexcept { return fpsOverride_.has_value(); } void setFpsOverride(float fps) noexcept; // aplica clampFps void clearFpsOverride() noexcept { fpsOverride_.reset(); } float effectiveFps(float baseFps) const noexcept; double durationSeconds(float baseFps) const noexcept; private: std::optional fpsOverride_; }; } // namespace tahgibu