Lecture, validation et traduction en région de texture du format nom-asset.anim.json.
More...
#include <AnimationCatalog.h>
Lecture, validation et traduction en région de texture du format nom-asset.anim.json.
Logique pure (aucune dépendance GPU/Qt/fichier au-delà de la lecture elle-même) : ne réalise ni chargement PNG ni mise en cache — c'est hmi::TextureCache qui compose ce catalogue avec hmi::AssetPaths et mémoïse le résultat, exactement comme il compose déjà hmi::TextureLoader (LOT-46 TACHE-03).
◆ currentFrameRegion()
Région de l'image courante d'une animation en cours, d'après son état (core::Animation) et la description de son asset (LOT-46 TACHE-05).
Traduit animation.clipIndex/frameIndex (indices résolus par core::AnimationSystem/ core::advanceAnimation) en indice de spritesheet via AnimationClip::frames, puis en région via frameRegion. Fonction pure, sans accès au jeu de clips au-delà de ce que porte déjà animation.clips : repli sur la première image si l'animation n'a pas (ou plus) de jeu de clips valide (EX-NFR-040).
- Parameters
-
| description | Description de l'asset animé (fournit frameWidth/frameHeight). |
| animation | État d'animation courant (typiquement l'horloge partagée d'un asset de tuile, LOT-46 TACHE-05). |
- Returns
- La région à échantillonner pour l'image courante.
◆ descriptorFileName()
| std::string hmi::AnimationCatalog::descriptorFileName |
( |
std::string_view | assetFileName | ) |
|
|
staticnodiscard |
Nom du fichier de description associé à un asset : même nom, extension remplacée.
- Parameters
-
| assetFileName | Nom logique de l'asset (ex. « water.png »). |
- Returns
- Le nom du descripteur (ex. « water.anim.json »).
◆ frameRegion()
Région (en pixels) d'une image de la spritesheet, par son indice.
Disposition horizontale (EX-NFR-010, fonction pure) : l'image d'indice frameSheetIndex occupe le rectangle [indice * frameWidth, 0, frameWidth, frameHeight]. Ne borne pas frameSheetIndex : c'est validateAgainstTexture qui rejette les indices hors bornes en amont, une fois les dimensions réelles connues.
- Parameters
-
| description | Description fournissant frameWidth/frameHeight. |
| frameSheetIndex | Indice de l'image dans la spritesheet (0-based). |
- Returns
- La région correspondante.
◆ fromDocument()
Construit le résultat depuis l'enveloppe déjà lue par core::readJsonObject.
JSON bien formé, racine objet et garde de version sont vérifiés avant d'arriver ici : c'est la brique partagée du LOT-79 (EX-CNT-012), et ce catalogue n'a plus à les réimplémenter pour son compte.
◆ loadFromFile()
Lit une description depuis un fichier.
Un fichier absent produit un échec de code FileNotFound : c'est le cas par défaut (asset non animé) et il ne doit produire aucun avertissement côté appelant — à distinguer d'un fichier présent mais invalide (EX-NFR-040).
- Parameters
-
- Returns
- La description, ou une erreur décrite. Ne lève jamais.
◆ loadFromString()
Lit une description depuis une chaîne JSON.
- Parameters
-
- Returns
- La description, ou une erreur décrite. Ne lève jamais.
◆ validateAgainstTexture()
Valide la cohérence entre la description et les dimensions décodées du PNG.
Spritesheet horizontale (frameRegion) : la hauteur du PNG doit égaler frameHeight (un seul rang), sa largeur doit être un multiple positif de frameWidth, et chaque indice d'image référencé par un clip doit désigner une position existante dans ce rang. Séparée de la lecture JSON (loadFromString) : les dimensions réelles ne sont connues qu'après décodage du PNG, en aval (EX-REN-007, même frontière que hmi::validateAsset).
- Parameters
-
| description | Description déjà lue. |
| fileName | Nom logique de l'asset, repris dans le message d'erreur. |
| textureWidth | Largeur décodée du PNG, en pixels. |
| textureHeight | Hauteur décodée du PNG, en pixels. |
- Returns
- Le verdict, avec un message exploitable si non conforme.
◆ DEFAULT_FRAME_DURATION_SECONDS
| float hmi::AnimationCatalog::DEFAULT_FRAME_DURATION_SECONDS = 0.1f |
|
staticconstexpr |
Durée d'image par défaut (secondes), utilisée quand un clip omet « frameDuration ».
◆ FORMAT_VERSION
| int hmi::AnimationCatalog::FORMAT_VERSION = 1 |
|
staticconstexpr |
The documentation for this class was generated from the following files:
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/AnimationCatalog.h
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/HMI/Graphics/AnimationCatalog.cpp