Pont ECS → écran : dessine chaque entité affichable, triée par calque puis par texture.
More...
#include <SpriteRenderer.h>
|
| | SpriteRenderer (SpriteBatch &batch, const TextureAtlas &atlas, TextureCache &cache) |
| | Construit le rendu de sprites.
|
| void | render (core::World &world, const Camera2D &camera, RenderMode mode, float interpolationAlpha, const std::optional< std::string > &background={}, int levelWidth=0, int levelHeight=0, const std::vector< core::TileTextureOverride > &textureOverrides={}, const std::unordered_map< std::string, core::Animation > &tileAnimations={}, const std::vector< core::Plane > &planes={}, bool planeParallax=false, const core::TileMap *doorCollision=nullptr) |
| | Dessine toutes les entités affichables du monde, vues par la caméra.
|
| void | setPlanesDirectory (std::filesystem::path directory) |
| | Fixe le dossier où résoudre les images de plans (Levels/Plans).
|
| const ComposedScene & | lastScene () const noexcept |
| void | setSkins (const SkinCatalog *skins, std::string skinSet={}) |
| | Désigne le catalogue de skins et le jeu à utiliser en mode Texture (LOT-42).
|
|
| void | logStatisticsIfChanged () |
| | Journalise les compteurs de l'image seulement s'ils ont changé depuis la précédente : le volume soumis reste observable (EX-NFR-005) sans écrire une ligne par image, ce que GraphicsLog proscrit sur un chemin de dessin.
|
Pont ECS → écran : dessine chaque entité affichable, triée par calque puis par texture.
À chaque frame, compose la scène (hmi::composeWorldSprites : parcours des entités core::Transform + core::Sprite, régions d'atlas, interpolation, culling — logique pure) puis la soumet au SpriteBatch. Objet de présentation (HMI) : il lit l'ECS sans jamais le muter (EX-ARCH-012). Ce n'est pas un core::ISystem : le rendu est découplé de la simulation (EX-REN-021).
La séparation composition/soumission (LOT-40) est ce qui rend l'ordre de dessin assertable sans GPU : lastScene() expose la liste exacte des primitives de la dernière image (EX-NFR-004).
◆ SpriteRenderer()
Construit le rendu de sprites.
- Parameters
-
| batch | Pipeline de quads texturés utilisé pour dessiner (non possédé). |
| atlas | Atlas fournissant la texture et ses dimensions (non possédé). |
| cache | Cache de textures, propriétaire du damier de repli lié en mode Texture (non possédé, LOT-41). |
◆ lastScene()
- Returns
- La scène composée à la dernière image (primitives soumises et compteurs).
◆ logStatisticsIfChanged()
| void hmi::SpriteRenderer::logStatisticsIfChanged |
( |
| ) |
|
|
private |
Journalise les compteurs de l'image seulement s'ils ont changé depuis la précédente : le volume soumis reste observable (EX-NFR-005) sans écrire une ligne par image, ce que GraphicsLog proscrit sur un chemin de dessin.
◆ render()
| void hmi::SpriteRenderer::render |
( |
core::World & | world, |
|
|
const Camera2D & | camera, |
|
|
RenderMode | mode, |
|
|
float | interpolationAlpha, |
|
|
const std::optional< std::string > & | background = {}, |
|
|
int | levelWidth = 0, |
|
|
int | levelHeight = 0, |
|
|
const std::vector< core::TileTextureOverride > & | textureOverrides = {}, |
|
|
const std::unordered_map< std::string, core::Animation > & | tileAnimations = {}, |
|
|
const std::vector< core::Plane > & | planes = {}, |
|
|
bool | planeParallax = false, |
|
|
const core::TileMap * | doorCollision = nullptr ) |
Dessine toutes les entités affichables du monde, vues par la caméra.
Seules les entités intersectant le cadrage de la caméra (marge comprise) sont soumises (EX-NFR-005) ; une entité écartée reste simulée normalement (EX-ARCH-012).
- Parameters
-
| world | Monde dont on lit les composants Transform et Sprite. |
| camera | Caméra fournissant la projection monde → écran et le cadrage visible. |
| mode | Mode de rendu courant (EX-REN-046) : bascule purement visuelle, sans effet sur la scène ECS ni sur la simulation. |
| interpolationAlpha | Facteur d'interpolation [0, 1[ entre le pas de simulation précédent et le pas courant (EX-ARCH-031, core::FixedTimestep::interpolationAlpha). Une entité portant un hmi::PreviousPosition est dessinée à lerp(précédente, courante, alpha) (mouvement lisse) ; une entité sans ce composant (tuiles fixes) est dessinée à sa position courante. 0 reproduit le comportement non interpolé. |
| background | Nom de l'asset de fond du niveau (core::Level::background, LOT-44), ou absent ; composé sous tout le reste (RenderLayer::Background), uniquement en mode RenderMode::Texture. |
| levelWidth | Largeur du niveau, en unités monde (une case = une unité) ; ignoré si background est absent. |
| levelHeight | Hauteur du niveau, en unités monde. |
| textureOverrides | Surcharges de texture par instance du niveau courant (EX-EDIT-043, LOT-45), transmises telles quelles à hmi::sceneTextures. |
| tileAnimations | Horloge d'animation partagée par asset de tuile (LOT-46 TACHE-05), transmise telle quelle à hmi::sceneTextures. |
| planes | Plans picturaux du niveau courant (EX-DEC-040, LOT-69), composés avant tout le reste et dans l'ordre déclaré — c'est cet ordre de composition qui porte leur ordre de dessin (cf. hmi::composePlanes). Leurs images sont résolues sous planesDirectory(). |
| planeParallax | Décide du décalage de parallaxe des plans (hmi::planeParallaxActive, EX-DEC-043) : l'appelant tranche, la table étant une règle du moteur croisée avec un drapeau de niveau, pas une propriété du rendu. |
| doorCollision | Grille de collision courante des mécanismes (core::
MechanismController::collisionMap, LOT-55), pour que l'ombre d'une porte suive son état ouverte/fermée plutôt que son type statique ; nullptr (défaut) exclut les portes de l'ombrage. |
◆ setPlanesDirectory()
| void hmi::SpriteRenderer::setPlanesDirectory |
( |
std::filesystem::path | directory | ) |
|
|
inline |
Fixe le dossier où résoudre les images de plans (Levels/Plans).
Un plan est une donnée de niveau, pas un asset : son image ne vit pas sous Assets/ et ne passe donc pas par la résolution de noms logiques du cache.
- Parameters
-
| directory | Dossier des images de plans. |
◆ setSkins()
| void hmi::SpriteRenderer::setSkins |
( |
const SkinCatalog * | skins, |
|
|
std::string | skinSet = {} ) |
|
inline |
Désigne le catalogue de skins et le jeu à utiliser en mode Texture (LOT-42).
Le catalogue n'est pas copié : l'appelant en reste propriétaire et doit le maintenir en vie. Réassigner un skin dans le catalogue se voit à l'image suivante, sans reconstruire la scène ECS — c'est tout l'intérêt de résoudre l'apparence à la composition.
- Parameters
-
| skins | Catalogue, ou nullptr pour retomber entièrement sur le damier. |
| skinSet | Nom du jeu courant ; vide pour le jeu par défaut du catalogue. |
◆ _atlas
◆ _batch
◆ _cache
◆ _loggedStatistics
◆ _planesDirectory
| std::filesystem::path hmi::SpriteRenderer::_planesDirectory |
|
private |
◆ _scene
◆ _skins
| const SkinCatalog* hmi::SpriteRenderer::_skins = nullptr |
|
private |
◆ _skinSet
| std::string hmi::SpriteRenderer::_skinSet |
|
private |
The documentation for this class was generated from the following files:
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/SpriteRenderer.h
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/SpriteRenderer.cpp