|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Sélection en lecture-écriture des entités possédant tous les composants demandés. More...
#include <View.h>
Classes | |
| class | Iterator |
| Itérateur avant sur les entités retenues par la vue. More... | |
Public Member Functions | |
| View (ComponentPool< Components > &... pools) | |
| Construit une vue joignant les pools des composants demandés. | |
| template<typename Function> | |
| void | each (Function &&function) const |
| Applique une fonction à chaque entité possédant tous les composants. | |
| Iterator | begin () const |
| Iterator | end () const |
Private Member Functions | |
| bool | matches (Entity entity) const |
| Indique si une entité possède tous les composants requis. | |
| template<typename Component> | |
| Component & | componentOf (Entity entity) const |
| Accède au composant d'un type donné pour une entité retenue. | |
| const std::vector< Entity > & | smallestEntities () const |
| Sélectionne le tableau dense d'entités de la plus petite pool. | |
Private Attributes | |
| std::tuple< ComponentPool< Components > *... > | _pools |
| Pointeurs sur les pools jointes, un par type de Components. | |
Sélection en lecture-écriture des entités possédant tous les composants demandés.
Une vue joint plusieurs core::ComponentPool et n'expose que les entités présentes dans toutes les pools (Transform et Velocity, par exemple). Pour chaque entité retenue, elle donne accès au handle et à une référence sur chacun de ses composants.
L'itération est pilotée par la plus petite pool parmi les types demandés : on parcourt son tableau dense et l'on filtre chaque entité sur la présence dans les autres pools, ce qui borne le coût par la plus petite population.
Deux formes d'usage équivalentes :
| Components | Types de composants requis, supposés distincts. |
|
inlineexplicit |
Construit une vue joignant les pools des composants demandés.
| pools | Références sur les pools, une par type de Components. |
|
inlinenodiscard |
|
inlinenodiscardprivate |
Accède au composant d'un type donné pour une entité retenue.
| Component | Type de composant voulu. |
| entity | Entité (supposée présente dans la pool correspondante). |
|
inline |
Applique une fonction à chaque entité possédant tous les composants.
| function | Appelable void(Entity, Components&...) invoqué par entité retenue. |
| Function | Type de l'appelable. |
|
inlinenodiscard |
|
inlinenodiscardprivate |
Indique si une entité possède tous les composants requis.
| entity | Entité testée. |
|
inlinenodiscardprivate |
Sélectionne le tableau dense d'entités de la plus petite pool.
|
private |
Pointeurs sur les pools jointes, un par type de Components.