Spaces
A space is a logical container for entities, objects and systems. It holds all things for one 'layer' of a scene. For example, there would be a space for the background, one for the level and one for the UI. Spaces should not interact with other spaces.
Systems, entities and objects can be inserted via the <<
instance method but not removed. To remove entities, one has to call their Entity#suicide
method, all dead entities are removed upon the next update. Systems should not be removed.
Spaces have multiple ways to select entites. The []
and []?
methods can be used for direct access via entity id. Then there is each_with
. It is used to get all entities in a space which hold the specified components. The call signatures are:
Both methods accept a block and yields the found entity and the component with the type specified in the first parameter.
comp_type
and *comp_types
are classes (not instances) which inherit from Scar::Component
. comp_types
are not yielded but filtered for. This allows systems to only process entities with certain components. That way, empty components can also be used as tags.
Example
To see the each_with
methods in action, please refer to the systems section.
Last updated