time-based: nou DeltaTime + migrada escena Logo (constants en segons, fora counters)
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
#include "core/system/delta_time.hpp"
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
namespace DeltaTime {
|
||||
|
||||
namespace {
|
||||
Uint64 last_time_ms = 0;
|
||||
}
|
||||
|
||||
void reset() {
|
||||
last_time_ms = SDL_GetTicks();
|
||||
}
|
||||
|
||||
auto tick() -> float {
|
||||
const Uint64 NOW_MS = SDL_GetTicks();
|
||||
const float DELTA_S = static_cast<float>(NOW_MS - last_time_ms) / 1000.0F;
|
||||
last_time_ms = NOW_MS;
|
||||
return DELTA_S;
|
||||
}
|
||||
|
||||
} // namespace DeltaTime
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
// Font única de delta_time per al joc. El loop principal NO té vsync ni
|
||||
// gates: cada escena crida `tick()` al començament del seu iterate() i rep
|
||||
// els segons reals transcorreguts des de l'última crida. Així el moviment és
|
||||
// independent del framerate (visualment suau a 2000 FPS o a 60 FPS).
|
||||
//
|
||||
// `reset()` reinicia el rellotge intern: cal cridar-lo en cada canvi
|
||||
// d'escena (després de càrregues llargues que podrien generar un primer
|
||||
// delta enorme) i quan es reprèn d'una pausa.
|
||||
|
||||
namespace DeltaTime {
|
||||
|
||||
// Reinicia el rellotge a "ara". Cap delta acumulat del passat.
|
||||
void reset();
|
||||
|
||||
// Retorna els segons des de l'última crida a `tick()` o `reset()`.
|
||||
auto tick() -> float;
|
||||
|
||||
} // namespace DeltaTime
|
||||
Reference in New Issue
Block a user