8#include <unordered_map>
77 return pool !=
nullptr && pool->
has(entity);
110 template <
typename... Components>
119 void addSystem(std::unique_ptr<ISystem> system);
125 void update(
float fixedDelta);
136 template <
typename T>
138 const std::type_index key(
typeid(T));
139 auto iterator =
_pools.find(key);
140 if (iterator ==
_pools.end()) {
151 template <
typename T>
153 const auto iterator =
_pools.find(std::type_index(
typeid(T)));
154 if (iterator ==
_pools.end()) {
163 std::unordered_map<std::type_index, std::unique_ptr<IComponentPool>>
_pools;
Assertions du projet : vérifient préconditions et invariants (bugs).
#define JADG_ASSERT(condition, message)
Vérifie une précondition.
Definition Assert.h:47
Stockage typé des composants d'un ECS sous forme de sparse set.
Gestionnaire du cycle de vie des entités (création, destruction, recyclage).
Identifiant d'entité de l'ECS : handle générationnel (index + génération).
Interface d'un système de l'ECS : logique exécutée au pas de temps fixe.
Vue multi-composants : itère les entités possédant un ensemble de types.
Stockage dense des composants d'un type T, indexé par entité (sparse set).
Definition ComponentPool.h:61
bool has(Entity entity) const
Indique si une entité possède un composant de ce type.
Definition ComponentPool.h:122
Crée, détruit et valide les entités de l'ECS.
Definition EntityManager.h:30
Sélection en lecture-écriture des entités possédant tous les composants demandés.
Definition View.h:47
Point d'entrée unique de la simulation : possède les entités, les composants et les systèmes.
Definition World.h:35
bool isAlive(Entity entity) const
Indique si une entité est vivante.
Definition World.cpp:36
void addSystem(std::unique_ptr< ISystem > system)
Enregistre un système ; l'ordre d'enregistrement fixe l'ordre d'exécution.
Definition World.cpp:41
EntityManager _entities
Cycle de vie des entités.
Definition World.h:161
void destroyEntity(Entity entity)
Détruit une entité et retire ses composants de toutes les pools.
Definition World.cpp:20
ComponentPool< T > & poolFor()
Récupère la pool du type T, en la créant à la première demande.
Definition World.h:137
std::vector< std::unique_ptr< ISystem > > _systems
Systèmes enregistrés, exécutés dans l'ordre d'insertion.
Definition World.h:165
View< Components... > view()
Construit une vue sur les entités possédant tous les composants demandés.
Definition World.h:111
std::unordered_map< std::type_index, std::unique_ptr< IComponentPool > > _pools
Pools de composants, une par type (clé = type du composant).
Definition World.h:163
const ComponentPool< T > * findPool() const
Récupère la pool du type T sans la créer.
Definition World.h:152
bool hasComponent(Entity entity) const
Indique si une entité possède un composant d'un type donné.
Definition World.h:75
void addComponent(Entity entity, const T &component)
Attache un composant à une entité.
Definition World.h:63
void update(float fixedDelta)
Exécute tous les systèmes enregistrés, dans l'ordre, pour un pas fixe.
Definition World.cpp:47
Entity createEntity()
Crée une nouvelle entité vivante.
Definition World.cpp:15
void removeComponent(Entity entity)
Retire le composant d'un type donné d'une entité.
Definition World.h:100
T & getComponent(Entity entity)
Accède au composant d'une entité (lecture-écriture).
Definition World.h:88
std::size_t systemCount() const
Definition World.cpp:56
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
Handle générationnel identifiant une entité de l'ECS.
Definition Entity.h:24