OGL Engine 1.2.0-dev
|
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::Scene & | GetScene () |
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< EntityID > | GetEntityIDsWith () |
Renvoie un tableau d'EntityIDs sous condition. | |
EntityID | GetEntityIDWithTag (std::string targetTag) |
Renvoie le premier EntityID trouvé pour le tag donné | |
std::vector< EntityID > | GetEntityIDsWithTag (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 |
Classe Registre qui stocke des composants et gère l'attribution des IDs d'entités.
Engine::ECS::Registry::Registry | ( | ) |
Créé un objet Registry.
Le constructeur remplis la file d'identifiants d'entités de 1 à MAX_ENTITIES
Ajoute les composants Parent/Children de manière automatique pour créer une relation parent/enfant.
parentID | |
childID |
|
inline |
Ajoute un nouveau component.
T | Le type de component à ajouter |
Args | Liste de types d'arguments pour construire le component |
entityID | L'EntityID qui référence le nouveau composant |
args | Les arguments pour créer le composant |
void Engine::ECS::Registry::AddTag | ( | EntityID | entityID, |
std::string | tag ) |
Ajoute un tag à une entité
entityID | |
tag |
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.
EntityID Engine::ECS::Registry::CreateEntity | ( | ) |
Créé une nouvelle entité et renvoie l'identifiant qui lui a été attribué
|
inline |
Créé une nouvelle entité avec les composants voulus.
Components | Les types de composants que l'on veut ajouter à l'entité |
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
entityID | L'id de l'entité à supprimer |
|
inline |
Renvoie le component référencé par l'EntityID donné
T | Le type de component voulu |
entityID | L'id de l'entité dont on cherche le composant |
|
inline |
Renvoie un vector de pointeurs vers tous les composants du type donné présents.
T |
entityID |
|
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)
T |
|
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
TComponents | Liste de composants pour filtrer les entités |
std::vector< EntityID > Engine::ECS::Registry::GetEntityIDsWithTag | ( | std::string | targetTag | ) |
Renvoie une liste d'entityID qui possèdent le tag donné
targetTag | Le tag à chercher |
EntityID Engine::ECS::Registry::GetEntityIDWithTag | ( | std::string | targetTag | ) |
Scene::Scene & Engine::ECS::Registry::GetScene | ( | ) |
Renvoie la scène courante.
std::set< std::string > Engine::ECS::Registry::GetTags | ( | EntityID | entityID | ) |
Renvoie les tags associés à une entité donnée.
entityID | L'ID de l'entité dont on veut les tags |
|
inline |
Vérifie si une entité possède un component.
T | Le type de component à chercher |
entityID | L'id d'entité dont on veut savoir si elle a un composant |
bool Engine::ECS::Registry::HasTag | ( | EntityID | entityID, |
std::string | tag ) |
Vérifie si une entité possède un tag.
entityID | |
tag |
bool Engine::ECS::Registry::IsValidEntity | ( | EntityID | entityID | ) |
Renvoie true si l'entité est valide et utilisable, false sinon.
entityID |
void Engine::ECS::Registry::Print | ( | ) |
Affiche un print du registre dans la console.
void Engine::ECS::Registry::RemoveChild | ( | EntityID | parentID, |
EntityID | childID, | ||
bool | removeComponents = true ) |
Brise la relation parent/enfant entre deux entités, si elle existe.
parentID | |
childID | |
removeComponents | Si true => supprime les composants Children/Parent au passage (s'il n'y a pas d'autre enfant) |
|
inline |
Supprime le composant de type T associé à l'entité à l'EntityID donné
T | Le type de component à supprimer |
entityID | L'entityID qui référence le component à supprimer |
|
friend |