Point d'entrée unique de la simulation : possède les entités, les composants et les systèmes.
More...
#include <World.h>
|
| Entity | createEntity () |
| | Crée une nouvelle entité vivante.
|
| void | destroyEntity (Entity entity) |
| | Détruit une entité et retire ses composants de toutes les pools.
|
| bool | isAlive (Entity entity) const |
| | Indique si une entité est vivante.
|
| template<typename T> |
| void | addComponent (Entity entity, const T &component) |
| | Attache un composant à une entité.
|
| template<typename T> |
| bool | hasComponent (Entity entity) const |
| | Indique si une entité possède un composant d'un type donné.
|
| template<typename T> |
| T & | getComponent (Entity entity) |
| | Accède au composant d'une entité (lecture-écriture).
|
| template<typename T> |
| void | removeComponent (Entity entity) |
| | Retire le composant d'un type donné d'une entité.
|
| template<typename... Components> |
| View< Components... > | view () |
| | Construit une vue sur les entités possédant tous les composants demandés.
|
| void | addSystem (std::unique_ptr< ISystem > system) |
| | Enregistre un système ; l'ordre d'enregistrement fixe l'ordre d'exécution.
|
| void | update (float fixedDelta) |
| | Exécute tous les systèmes enregistrés, dans l'ordre, pour un pas fixe.
|
| std::size_t | systemCount () const |
|
| template<typename T> |
| ComponentPool< T > & | poolFor () |
| | Récupère la pool du type T, en la créant à la première demande.
|
| template<typename T> |
| const ComponentPool< T > * | findPool () const |
| | Récupère la pool du type T sans la créer.
|
|
| EntityManager | _entities |
| | Cycle de vie des entités.
|
| std::unordered_map< std::type_index, std::unique_ptr< IComponentPool > > | _pools |
| | Pools de composants, une par type (clé = type du composant).
|
| std::vector< std::unique_ptr< ISystem > > | _systems |
| | Systèmes enregistrés, exécutés dans l'ordre d'insertion.
|
Point d'entrée unique de la simulation : possède les entités, les composants et les systèmes.
Le World délègue le cycle de vie des entités à un core::EntityManager, détient une core::ComponentPool par type de composant (créée à la demande) et exécute les systèmes enregistrés dans l'ordre, à chaque pas de temps fixe (EX-ARCH-030). Il possède toutes ses ressources (RAII) : aucun état global, aucune connaissance du rendu (dépendance HMI → Core respectée).
◆ addComponent()
template<typename T>
| void core::World::addComponent |
( |
Entity | entity, |
|
|
const T & | component ) |
|
inline |
Attache un composant à une entité.
- Template Parameters
-
| T | Type de composant (donnée pure). |
- Parameters
-
| entity | Entité destinataire (supposée vivante, sans ce composant). |
| component | Valeur du composant. |
◆ addSystem()
| void core::World::addSystem |
( |
std::unique_ptr< ISystem > | system | ) |
|
Enregistre un système ; l'ordre d'enregistrement fixe l'ordre d'exécution.
- Parameters
-
| system | Système à ajouter (le World en prend possession). |
◆ createEntity()
| Entity core::World::createEntity |
( |
| ) |
|
|
nodiscard |
Crée une nouvelle entité vivante.
- Returns
- Un handle valide.
◆ destroyEntity()
| void core::World::destroyEntity |
( |
Entity | entity | ) |
|
Détruit une entité et retire ses composants de toutes les pools.
- Parameters
-
| entity | Entité à détruire ; sans effet si elle n'est pas vivante. |
◆ findPool()
Récupère la pool du type T sans la créer.
- Template Parameters
-
- Returns
- Un pointeur sur la pool, ou nullptr si aucune pool de ce type n'existe.
◆ getComponent()
template<typename T>
| T & core::World::getComponent |
( |
Entity | entity | ) |
|
|
inlinenodiscard |
Accède au composant d'une entité (lecture-écriture).
- Template Parameters
-
- Parameters
-
| entity | Entité porteuse du composant. |
- Returns
- Une référence sur le composant.
- Precondition
- L'entité possède ce composant (hasComponent<T>() == true).
◆ hasComponent()
template<typename T>
| bool core::World::hasComponent |
( |
Entity | entity | ) |
const |
|
inlinenodiscard |
Indique si une entité possède un composant d'un type donné.
- Template Parameters
-
- Parameters
-
- Returns
- true si le composant est présent.
◆ isAlive()
| bool core::World::isAlive |
( |
Entity | entity | ) |
const |
|
nodiscard |
Indique si une entité est vivante.
- Parameters
-
- Returns
- true si l'entité est vivante.
◆ poolFor()
Récupère la pool du type T, en la créant à la première demande.
- Template Parameters
-
- Returns
- Une référence sur la pool typée.
◆ removeComponent()
template<typename T>
| void core::World::removeComponent |
( |
Entity | entity | ) |
|
|
inline |
Retire le composant d'un type donné d'une entité.
- Template Parameters
-
- Parameters
-
| entity | Entité dont le composant est retiré. |
- Precondition
- L'entité possède ce composant (hasComponent<T>() == true).
◆ systemCount()
| std::size_t core::World::systemCount |
( |
| ) |
const |
|
nodiscard |
- Returns
- Nombre de systèmes enregistrés.
◆ update()
| void core::World::update |
( |
float | fixedDelta | ) |
|
Exécute tous les systèmes enregistrés, dans l'ordre, pour un pas fixe.
- Parameters
-
| fixedDelta | Durée du pas de simulation, en secondes. |
◆ view()
template<typename... Components>
| View< Components... > core::World::view |
( |
| ) |
|
|
inlinenodiscard |
Construit une vue sur les entités possédant tous les composants demandés.
- Template Parameters
-
| Components | Types de composants requis (distincts). |
- Returns
- Une core::View joignant les pools correspondantes.
◆ _entities
Cycle de vie des entités.
◆ _pools
| std::unordered_map<std::type_index, std::unique_ptr<IComponentPool> > core::World::_pools |
|
private |
Pools de composants, une par type (clé = type du composant).
◆ _systems
| std::vector<std::unique_ptr<ISystem> > core::World::_systems |
|
private |
Systèmes enregistrés, exécutés dans l'ordre d'insertion.
The documentation for this class was generated from the following files:
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Ecs/World.h
- /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Ecs/World.cpp