Copy class Registry {
public:
StorageComponents<Component> ®ister_component();
StorageComponents<Component> &get_components();
StorageComponents<Component> const &get_components() const;
bool hasComponent(entity_t const &entity);
Component &getComponent(entity_t const &entity);
entity_t spawn_entity(std::size_t zIndex = 0, bool state = true);
void disableEntity(entity_t const &entity);
void enableEntity(entity_t const &entity);
bool isEntityEnabled(entity_t const &entity);
entity_t entity_from_index(std::size_t idx);
bool isEntityExist(entity_t entity);
void kill_entity(entity_t const &e);
typename StorageComponents<Component>::reference_type add_component(entity_t const &to, Component &&component);
typename StorageComponents<Component>::reference_type emplace_component(entity_t const &to, Params &&...params);
void modify_component(entity_t const &entity, std::function<void(Component&)> callback);
void remove_component(entity_t const &from);
std::multimap<size_t, entity_t> const &get_entity_sprite_order() const;
private:
std::multimap<size_t, entity_t> _entity_sprite_order;
std::unordered_map<std::type_index, std::any> _components_arrays;
std::map<entity_t, std::pair<bool, size_t>> _entity_to_index;
entity_t _next_entity_id = 0;
std::vector<entity_t> _entities;
};
The Registry class is a fundamental component of the ECS (Entity-Component-System) architecture in your program. It serves as the central repository for managing entities and their associated components. You will use this class to create, manipulate, and query entities and their components within your application.
Copy template <class Component> StorageComponents<Component> ®ister_component()
Copy template <class Component> StorageComponents<Component> &get_components()
template <class Component> StorageComponents<Component> const &get_components() const
Copy template <typename Component> bool hasComponent(entity_t const &entity)
Copy template <typename Component> Component &getComponent(entity_t const &entity)
Copy entity_t entity_from_index(std::size_t idx)
Copy template <typename Component> typename StorageComponents<Component>::reference_type add_component(entity_t const &to, Component &&component)
template <typename Component, typename...Params> typename StorageComponents<Component>::reference_type emplace_component(entity_t const &to, Params &&...params)
Copy template <typename Component> void remove_component(entity_t const &from)
You will also find a lot of others functions that you may used for handle the entity behavior or things like that, like: void disableEntity(entity_t const &entity);
or void enableEntity(entity_t const &entity);
for example.