time-based: nou DeltaTime + migrada escena Logo (constants en segons, fora counters)

This commit is contained in:
2026-05-18 21:57:31 +02:00
parent 081a7e02c7
commit f1a6636222
4 changed files with 70 additions and 33 deletions
+22
View File
@@ -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
+20
View File
@@ -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