An Aspect is used by systems as a matcher against entities, to check if a
system is interested in an entity. Aspects define what sort of component
types an entity must possess, or not possess.
The most raw entity system. It should not typically be used, but you can
create your own entity system handling by extending this. It is recommended
that you use the other provided entity system implementations.
If you need to group your entities together, e.g. tanks going into "units"
group or explosions into "effects", then use this manager. You must retrieve
it using world instance.
If you need to process entities at a certain interval then use this.
A typical usage would be to regenerate ammo or health at certain intervals,
no need to do that every game loop, but perhaps every 100 ms. or every
second.
All components that should be managed in a ObjectPool must extend this
class and have a factory constructor that calls Pooled.of(...) to create
a component. By doing so, dartemis can handle the construction of
PooledComponents and reuse them when they are no longer needed.
If you need to tag any entity, use this. A typical usage would be to tag
entities such as "PLAYER", "BOSS" or something that is very unique.
An entity can only belong to one tag (0,1) at a time.
This system has an empty aspect so it processes no entities, but it still
gets invoked.
You can use this system if you need to execute some game logic and not have
to concern yourself about aspects or entities.