|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Crée, détruit et valide les entités de l'ECS. More...
#include <EntityManager.h>
Public Member Functions | |
| Entity | create () |
| Crée une nouvelle entité vivante. | |
| void | destroy (Entity entity) |
| Détruit une entité et libère son index pour recyclage. | |
| bool | isAlive (Entity entity) const |
| Indique si un handle désigne une entité actuellement vivante. | |
| std::size_t | aliveCount () const |
Private Attributes | |
| std::vector< Entity::Generation > | _generations |
| Génération courante de chaque index (indexé par Entity::index). | |
| std::vector< bool > | _alive |
| Drapeau de vie de chaque index (indexé par Entity::index). | |
| std::vector< Entity::Index > | _freeIndices |
| Index libérés disponibles au recyclage. | |
| std::size_t | _aliveCount = 0 |
| Nombre d'entités vivantes. | |
Crée, détruit et valide les entités de l'ECS.
Possède les tableaux internes indexés par core::Entity::index :
Les index libérés sont conservés dans une liste libre et recyclés en incrémentant leur génération, ce qui borne la mémoire et invalide automatiquement les handles pointant sur un index réutilisé. Les opérations sont en temps constant amorti, sans allocation par entité.
|
nodiscard |
|
nodiscard |
Crée une nouvelle entité vivante.
| void core::EntityManager::destroy | ( | Entity | entity | ) |
Détruit une entité et libère son index pour recyclage.
Sans effet si le handle n'est pas vivant (déjà détruit ou périmé). Après l'appel, isAlive(entity) est faux pour ce handle.
| entity | Handle de l'entité à détruire. |
|
nodiscard |
Indique si un handle désigne une entité actuellement vivante.
| entity | Handle à tester. |
|
private |
Drapeau de vie de chaque index (indexé par Entity::index).
|
private |
Nombre d'entités vivantes.
|
private |
Index libérés disponibles au recyclage.
|
private |
Génération courante de chaque index (indexé par Entity::index).