JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
Loading...
Searching...
No Matches
core::EntityManager Class Reference

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.

Detailed Description

Crée, détruit et valide les entités de l'ECS.

Possède les tableaux internes indexés par core::Entity::index :

  • la génération courante de chaque index (pour détecter les handles périmés) ;
  • un drapeau de vie par 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é.

Member Function Documentation

◆ aliveCount()

std::size_t core::EntityManager::aliveCount ( ) const
nodiscard
Returns
Nombre d'entités actuellement vivantes.

◆ create()

Entity core::EntityManager::create ( )
nodiscard

Crée une nouvelle entité vivante.

Returns
Un handle valide, distinct de toute entité vivante existante.

◆ destroy()

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.

Parameters
entityHandle de l'entité à détruire.

◆ isAlive()

bool core::EntityManager::isAlive ( Entity entity) const
nodiscard

Indique si un handle désigne une entité actuellement vivante.

Parameters
entityHandle à tester.
Returns
true si l'index est vivant et la génération correspond.

Member Data Documentation

◆ _alive

std::vector<bool> core::EntityManager::_alive
private

Drapeau de vie de chaque index (indexé par Entity::index).

◆ _aliveCount

std::size_t core::EntityManager::_aliveCount = 0
private

Nombre d'entités vivantes.

◆ _freeIndices

std::vector<Entity::Index> core::EntityManager::_freeIndices
private

Index libérés disponibles au recyclage.

◆ _generations

std::vector<Entity::Generation> core::EntityManager::_generations
private

Génération courante de chaque index (indexé par Entity::index).


The documentation for this class was generated from the following files:
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Ecs/EntityManager.h
  • /home/runner/work/JustAnotherDnDGame/JustAnotherDnDGame/Source/Core/Ecs/EntityManager.cpp