|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Position d'une entité au pas de simulation précédent, pour l'interpolation de rendu (EX-ARCH-031). More...
#include <PreviousPosition.h>
Public Attributes | |
| core::Vector2 | value {} |
| Position de l'entité (coin haut-gauche, unités monde) telle que laissée par le pas précédent. | |
Position d'une entité au pas de simulation précédent, pour l'interpolation de rendu (EX-ARCH-031).
La simulation avance par pas fixes discrets (core::FixedTimestep, Boucle de jeu et pas de temps fixe) tandis que le rendu redessine une fois par frame réelle, souvent plus fréquente (écran 120/144 Hz). Sans interpolation, une entité en mouvement continu (personnage, danger mobile, bloc poussé) apparaît par « à-coups » figés à sa dernière position simulée. En conservant la position du pas précédent en plus de la position courante (core::Transform), SpriteRenderer peut dessiner l'entité à lerp(précédente, courante, alpha) où alpha ∈ [0, 1[ est le facteur d'interpolation fourni par core::FixedTimestep::interpolationAlpha — un mouvement lisse quel que soit le framerate de rendu.
C'est un composant de présentation (hmi, jamais core) : il vit néanmoins dans le core::World (générique sur le type de composant), écrit par HMI (hmi::GameSession recopie la position courante vers ce champ au début de chaque pas) et lu par HMI (hmi::SpriteRenderer). Core l'ignore totalement — aucune règle de simulation n'en dépend, la frontière HMI → Core reste intacte (EX-NFR-010, EX-ARCH-012). Une entité sans ce composant (les tuiles fixes, l'immense majorité) est simplement dessinée à sa position courante, sans interpolation.
| core::Vector2 hmi::PreviousPosition::value {} |
Position de l'entité (coin haut-gauche, unités monde) telle que laissée par le pas précédent.