11#include <unordered_set>
69 if constexpr (std::is_base_of_v<SingletonComponent<Component>,
Component>) {
72 "), because another entity already has it.");
80 template <
typename Component>
88 static_assert(std::is_base_of_v<SingletonComponent<Component>,
Component>,
89 "Component assignment is only possible for Singleton Components.");
102 template <
typename Component>
104 static_assert(!std::is_base_of_v<SingletonComponent<Component>,
Component>,
105 "Component removal is only possible for non-Singleton Components.");
116 template <
typename Component>
140 template <
typename Component>
152 template <
typename Component>
163 template <
typename Component>
174 template <
typename Component>
179 template <
typename Component>
184 template <
typename Component>
189 template <
typename Component>
191 static_assert(std::is_base_of_v<SingletonComponent<Component>,
Component>,
192 "Obtaining an Entity of a Component is only possible for SingletonComponents");
200 template <
typename Component>
202 static_assert(std::is_base_of_v<SingletonComponent<Component>,
Component>,
203 "Obtaining a Component is only possible for SingletonComponents");
223 template <
typename Component>
238 template <
typename Component>
247 mutable std::unordered_map<size_t, std::unique_ptr<SparseSetBase>>
Manages a pool of unused entity identifiers and provides mechanisms for requesting and removing them.
Definition EntityHierarchy.hpp:20
Definition EntityProvider.hpp:19
Definition Registry.hpp:28
std::optional< Entity > getEntity() const
Definition Registry.hpp:190
Registry & operator=(const Registry &other)
Definition Registry.cpp:14
std::vector< Component > & getComponents()
Definition Registry.hpp:180
EntityProvider _entityProvider
Definition Registry.hpp:249
const Component & getComponent(Entity entity) const
Definition Registry.hpp:153
Component & addComponent(Entity entity, Args &&... args)
Definition Registry.hpp:67
SparseSet< Component > & getOrCreateComponentSet()
Definition Registry.hpp:224
void removeEntity(Entity entity)
Definition Registry.cpp:32
Component * getComponent()
Definition Registry.hpp:201
void clearComponents()
Definition Registry.hpp:81
void removeComponent(Entity entity)
Definition Registry.hpp:103
SparseSet< Component > & getComponentSet()
Definition Registry.hpp:164
const SparseSet< Component > & getOrCreateComponentSet() const
Definition Registry.hpp:239
EntityHierarchy & getHierarchy()
Definition Registry.cpp:38
std::pair< Entity, Entity > ParentAndChild
Definition Registry.hpp:215
const SparseSet< Component > & getComponentSet() const
Definition Registry.hpp:175
bool hasComponent(Entity entity) const
Definition Registry.hpp:117
bool hasComponents(Entity entity) const
Definition Registry.hpp:129
const std::vector< Component > & getComponents() const
Definition Registry.hpp:185
std::unordered_map< size_t, std::unique_ptr< SparseSetBase > > _componentSets
Definition Registry.hpp:248
EntityHierarchy _entityHierarchy
Definition Registry.hpp:250
Component & getComponent(Entity entity)
Definition Registry.hpp:141
Entity addEntity()
Definition Registry.cpp:28
Component & assignComponent(Entity entity, Args &&... args)
Definition Registry.hpp:87
uint32_t Entity
Definition Entity.hpp:7