OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
Engine::ECS::Registry Class Reference

Classe Registre qui stocke des composants et gère l'attribution des IDs d'entités. More...

#include <registry.hpp>

Public Member Functions

 Registry ()
 Créé un objet Registry.
void Print ()
 Affiche un print du registre dans la console.
Scene::SceneGetScene ()
 Renvoie la scène courante.
EntityID CreateEntity ()
 Créé une nouvelle entité et renvoie l'identifiant qui lui a été attribué
template<typename... Components>
EntityID CreateEntityWith ()
 Créé une nouvelle entité avec les composants voulus.
void DestroyEntity (EntityID entityID)
 Supprime l'entité référencée par l'identifiant donné
bool IsValidEntity (EntityID entityID)
 Renvoie true si l'entité est valide et utilisable, false sinon.
void Clear ()
 Nettoie le registre dans son entiereté.
template<typename... TComponents>
std::vector< EntityIDGetEntityIDsWith ()
 Renvoie un tableau d'EntityIDs sous condition.
EntityID GetEntityIDWithTag (std::string targetTag)
 Renvoie le premier EntityID trouvé pour le tag donné
std::vector< EntityIDGetEntityIDsWithTag (std::string targetTag)
 Renvoie une liste d'entityID qui possèdent le tag donné
template<typename T, typename... Args>
void AddComponent (EntityID entityID, Args &&... args)
 Ajoute un nouveau component.
template<typename T>
void RemoveComponent (EntityID entityID)
 Supprime le composant de type T associé à l'entité à l'EntityID donné
template<typename T>
size_t GetComponentTypeID ()
 Renvoie une identifiant unique pour chaque type de composant.
template<typename T>
T & GetComponent (EntityID entityID)
 Renvoie le component référencé par l'EntityID donné
template<typename T>
std::vector< T * > GetComponents (EntityID entityID)
 Renvoie un vector de pointeurs vers tous les composants du type donné présents.
template<typename T>
bool HasComponent (EntityID entityID)
 Vérifie si une entité possède un component.
void AddTag (EntityID entityID, std::string tag)
 Ajoute un tag à une entité
bool HasTag (EntityID entityID, std::string tag)
 Vérifie si une entité possède un tag.
std::set< std::string > GetTags (EntityID entityID)
 Renvoie les tags associés à une entité donnée.
void AddChild (EntityID parentID, EntityID childID)
 Ajoute les composants Parent/Children de manière automatique pour créer une relation parent/enfant.
void RemoveChild (EntityID parentID, EntityID childID, bool removeComponents=true)
 Brise la relation parent/enfant entre deux entités, si elle existe.

Friends

class Scene::Scene

Detailed Description

Classe Registre qui stocke des composants et gère l'attribution des IDs d'entités.

Constructor & Destructor Documentation

◆ Registry()

Engine::ECS::Registry::Registry ( )

Créé un objet Registry.

Le constructeur remplis la file d'identifiants d'entités de 1 à MAX_ENTITIES

Member Function Documentation

◆ AddChild()

void Engine::ECS::Registry::AddChild ( EntityID parentID,
EntityID childID )

Ajoute les composants Parent/Children de manière automatique pour créer une relation parent/enfant.

Parameters
parentID
childID

◆ AddComponent()

template<typename T, typename... Args>
void Engine::ECS::Registry::AddComponent ( EntityID entityID,
Args &&... args )
inline

Ajoute un nouveau component.

Template Parameters
TLe type de component à ajouter
ArgsListe de types d'arguments pour construire le component
Parameters
entityIDL'EntityID qui référence le nouveau composant
argsLes arguments pour créer le composant

◆ AddTag()

void Engine::ECS::Registry::AddTag ( EntityID entityID,
std::string tag )

Ajoute un tag à une entité

Parameters
entityID
tag

◆ Clear()

void Engine::ECS::Registry::Clear ( )

Nettoie le registre dans son entiereté.

A pour effet de nettoyer tous les componentStorages, y compris la liste de storages du registre. Nettoie ensuite les tags d'entités, et rend tous les EntityIDs possibles à nouveau disponibles.

◆ CreateEntity()

EntityID Engine::ECS::Registry::CreateEntity ( )

Créé une nouvelle entité et renvoie l'identifiant qui lui a été attribué

Returns
EntityID L'identifiant de l'entité nouvellement créée

◆ CreateEntityWith()

template<typename... Components>
EntityID Engine::ECS::Registry::CreateEntityWith ( )
inline

Créé une nouvelle entité avec les composants voulus.

Template Parameters
ComponentsLes types de composants que l'on veut ajouter à l'entité
Returns
EntityID L'identifiant de l'entité nouvellement créée

◆ DestroyEntity()

void Engine::ECS::Registry::DestroyEntity ( EntityID entityID)

Supprime l'entité référencée par l'identifiant donné

A pour effet de supprimer les composants rattachés en supprimant les entrées des storages

Parameters
entityIDL'id de l'entité à supprimer

◆ GetComponent()

template<typename T>
T & Engine::ECS::Registry::GetComponent ( EntityID entityID)
inline

Renvoie le component référencé par l'EntityID donné

Template Parameters
TLe type de component voulu
Parameters
entityIDL'id de l'entité dont on cherche le composant
Returns
T& Une référence au component demandé

◆ GetComponents()

template<typename T>
std::vector< T * > Engine::ECS::Registry::GetComponents ( EntityID entityID)
inline

Renvoie un vector de pointeurs vers tous les composants du type donné présents.

Template Parameters
T
Parameters
entityID
Returns
std::vector<T*>

◆ GetComponentTypeID()

template<typename T>
size_t Engine::ECS::Registry::GetComponentTypeID ( )
inline

Renvoie une identifiant unique pour chaque type de composant.

La première fois qu'un type T appelle cette méthode, elle créé une constante avec un id unique incrémental Les appels subséquents pour le même type T ne pouvant pas modifier une constante, se contentent de renvoyer l'id stocké (static)

Template Parameters
T
Returns
size_t

◆ GetEntityIDsWith()

template<typename... TComponents>
std::vector< EntityID > Engine::ECS::Registry::GetEntityIDsWith ( )
inline

Renvoie un tableau d'EntityIDs sous condition.

Les entités renvoyées doivent toutes référencer les composants demandés pour être valides

Template Parameters
TComponentsListe de composants pour filtrer les entités
Returns
std::vector<EntityID> Tableau d'entités respectant la liste de composants

◆ GetEntityIDsWithTag()

std::vector< EntityID > Engine::ECS::Registry::GetEntityIDsWithTag ( std::string targetTag)

Renvoie une liste d'entityID qui possèdent le tag donné

Parameters
targetTagLe tag à chercher
Returns
std::vector<EntityID> Liste d'id d'entités qui correspondent

◆ GetEntityIDWithTag()

EntityID Engine::ECS::Registry::GetEntityIDWithTag ( std::string targetTag)

Renvoie le premier EntityID trouvé pour le tag donné

Parameters
targetTagTag à chercher
Returns
EntityID Le premier EntityID qui correspond à la demande dans la liste

◆ GetScene()

Scene::Scene & Engine::ECS::Registry::GetScene ( )

Renvoie la scène courante.

Returns
Scene&

◆ GetTags()

std::set< std::string > Engine::ECS::Registry::GetTags ( EntityID entityID)

Renvoie les tags associés à une entité donnée.

Parameters
entityIDL'ID de l'entité dont on veut les tags
Returns
std::set<std::string> La liste de tags

◆ HasComponent()

template<typename T>
bool Engine::ECS::Registry::HasComponent ( EntityID entityID)
inline

Vérifie si une entité possède un component.

Template Parameters
TLe type de component à chercher
Parameters
entityIDL'id d'entité dont on veut savoir si elle a un composant
Returns
true Si l'entité possède un component de type T
false Si l'entité ne possède pas de component de type T

◆ HasTag()

bool Engine::ECS::Registry::HasTag ( EntityID entityID,
std::string tag )

Vérifie si une entité possède un tag.

Parameters
entityID
tag
Returns
true
false

◆ IsValidEntity()

bool Engine::ECS::Registry::IsValidEntity ( EntityID entityID)

Renvoie true si l'entité est valide et utilisable, false sinon.

Parameters
entityID
Returns
true
false

◆ Print()

void Engine::ECS::Registry::Print ( )

Affiche un print du registre dans la console.

◆ RemoveChild()

void Engine::ECS::Registry::RemoveChild ( EntityID parentID,
EntityID childID,
bool removeComponents = true )

Brise la relation parent/enfant entre deux entités, si elle existe.

Parameters
parentID
childID
removeComponentsSi true => supprime les composants Children/Parent au passage (s'il n'y a pas d'autre enfant)

◆ RemoveComponent()

template<typename T>
void Engine::ECS::Registry::RemoveComponent ( EntityID entityID)
inline

Supprime le composant de type T associé à l'entité à l'EntityID donné

Template Parameters
TLe type de component à supprimer
Parameters
entityIDL'entityID qui référence le component à supprimer

◆ Scene::Scene

friend class Scene::Scene
friend

The documentation for this class was generated from the following files: