46template <
typename... Components>
60 template <
typename Function>
61 void each(Function&& function)
const {
63 for (
const Entity entity : driver) {
85 Iterator(
const View* view,
const std::vector<Entity>* driver, std::size_t index)
115 return std::tuple<
Entity, Components&...>(entity,
116 _view->componentOf<Components>(entity)...);
141 return Iterator(
this, &driver, driver.size());
160 template <
typename Component>
162 return std::get<ComponentPool<Component>*>(
_pools)->get(entity);
170 const std::vector<Entity>* smallest =
nullptr;
171 std::size_t smallestSize = (std::numeric_limits<std::size_t>::max)();
174 const auto consider = [&](
const auto* pool) {
175 if (pool->size() < smallestSize) {
176 smallestSize = pool->size();
177 smallest = &pool->entities();
185 std::tuple<ComponentPool<Components>*...>
_pools;
Stockage typé des composants d'un ECS sous forme de sparse set.
Identifiant d'entité de l'ECS : handle générationnel (index + génération).
Stockage dense des composants d'un type T, indexé par entité (sparse set).
Definition ComponentPool.h:61
Itérateur avant sur les entités retenues par la vue.
Definition View.h:77
Iterator & operator++()
Avance jusqu'à l'entité valide suivante.
Definition View.h:103
Iterator(const View *view, const std::vector< Entity > *driver, std::size_t index)
Construit un itérateur positionné puis avancé sur la première entité valide.
Definition View.h:85
void skipToMatch()
Avance l'index sur la prochaine entité possédant tous les composants.
Definition View.h:121
const std::vector< Entity > * _driver
Definition View.h:128
bool operator!=(const Iterator &other) const
Compare deux itérateurs par position.
Definition View.h:95
const View * _view
Definition View.h:127
std::tuple< Entity, Components &... > operator*() const
Déréférence l'itérateur sur l'entité courante et ses composants.
Definition View.h:113
std::size_t _index
Definition View.h:129
Component & componentOf(Entity entity) const
Accède au composant d'un type donné pour une entité retenue.
Definition View.h:161
bool matches(Entity entity) const
Indique si une entité possède tous les composants requis.
Definition View.h:150
const std::vector< Entity > & smallestEntities() const
Sélectionne le tableau dense d'entités de la plus petite pool.
Definition View.h:169
Iterator end() const
Definition View.h:139
void each(Function &&function) const
Applique une fonction à chaque entité possédant tous les composants.
Definition View.h:61
Iterator begin() const
Definition View.h:133
std::tuple< ComponentPool< Components > *... > _pools
Pointeurs sur les pools jointes, un par type de Components.
Definition View.h:185
View(ComponentPool< Components > &... pools)
Construit une vue joignant les pools des composants demandés.
Definition View.h:53
Espace de noms du moteur et de la logique de jeu.
Definition Bootstrap.h:9
Handle générationnel identifiant une entité de l'ECS.
Definition Entity.h:24