JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
core::FixedTimestep Class Reference

Convertit un temps réel écoulé variable en un nombre de pas de simulation fixes. More...

#include <FixedTimestep.h>

Public Member Functions

 FixedTimestep (float fixedDeltaSeconds=1.0f/60.0f, int maximumStepsPerCall=5)
 Construit un cadenceur.
int advance (float elapsedSeconds)
 Accumule le temps écoulé et renvoie le nombre de pas fixes à exécuter.
float fixedDeltaSeconds () const
 Durée d'un pas de simulation.
float interpolationAlpha () const
 Fraction de pas restant dans l'accumulateur, pour l'interpolation du rendu.

Private Attributes

float _fixedDeltaSeconds
int _maximumStepsPerCall
float _accumulator

Detailed Description

Convertit un temps réel écoulé variable en un nombre de pas de simulation fixes.

Accumule le temps réel fourni par l'appelant et le découpe en pas de durée constante, garantissant une simulation déterministe indépendante du framerate. Un plafond du nombre de pas par appel évite la « spirale de la mort » lorsque le temps écoulé devient très grand (fenêtre gelée, point d'arrêt…).

La classe ne mesure pas le temps elle-même (aucune dépendance système) : le temps réel écoulé lui est passé en paramètre, ce qui la rend testable en isolation.

Constructor & Destructor Documentation

◆ FixedTimestep()

core::FixedTimestep::FixedTimestep ( float fixedDeltaSeconds = 1.0f / 60.0f,
int maximumStepsPerCall = 5 )
explicit

Construit un cadenceur.

Parameters
fixedDeltaSecondsDurée d'un pas de simulation, en secondes (défaut : 1/60).
maximumStepsPerCallNombre maximal de pas restitués par appel à advance() (anti-spirale).

Member Function Documentation

◆ advance()

int core::FixedTimestep::advance ( float elapsedSeconds)
nodiscard

Accumule le temps écoulé et renvoie le nombre de pas fixes à exécuter.

Parameters
elapsedSecondsTemps réel écoulé depuis le dernier appel, en secondes.
Returns
Nombre de pas de simulation à exécuter (0 si le seuil n'est pas atteint).

◆ fixedDeltaSeconds()

float core::FixedTimestep::fixedDeltaSeconds ( ) const
nodiscard

Durée d'un pas de simulation.

Returns
Le pas fixe, en secondes.

◆ interpolationAlpha()

float core::FixedTimestep::interpolationAlpha ( ) const
nodiscard

Fraction de pas restant dans l'accumulateur, pour l'interpolation du rendu.

Returns
Un facteur dans l'intervalle [0, 1[.

Member Data Documentation

◆ _accumulator

float core::FixedTimestep::_accumulator
private

◆ _fixedDeltaSeconds

float core::FixedTimestep::_fixedDeltaSeconds
private

◆ _maximumStepsPerCall

int core::FixedTimestep::_maximumStepsPerCall
private

The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Time/FixedTimestep.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Time/FixedTimestep.cpp