29 lines
795 B
C++
29 lines
795 B
C++
#pragma once
|
|
|
|
#include <optional>
|
|
|
|
#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<float> fpsOverride_;
|
|
};
|
|
|
|
} // namespace tahgibu
|