You can now give the 'key' component to Entities.
A key will be generated automatically and stored in Entity.key.value.
You can then use this key to fetch the Entity from the World with World:getEntityByKey(key)
The keys are generated with a generator function that can be overriden.
You can remove the component to tell Concord an Entity shouldn't be serialized.
It's given automatically on Entity creation, but this can be disabled by changing Entity.SERIALIZE_BY_DEFAULT to false.
Filters allow for a Pool constructor (defaults to Lists) that can be used to define Custom Pools.
The constructor is a function that takes the Filter Definition and returns a Custom Pool with these functions:
:add(e) - Add the Entity to the pool
:remove(e) - Remove the Entity from the pool
:has(e) boolean - Checks if the Entity exists in the pool
:clear() - Clears the Pool from Entities
Fixes#40
Removed hasName/getName on Systems and Worlds.
Removed Entity.__components since it had a duplicate version of the components stored in the Entity itself.
main changes:
- add parameter and return types where applicable
- use @module and @classmod tags at the top of files
- remove some redundant descriptions of return values, especially for functions that return a boolean
recommended next steps:
- more consistent grammar
- add links to classes and functions in descriptions where appropriate
- be consistent about naming Systems vs. SystemClasses and Components vs. ComponentClasses
Turns out doing a 'setmetatable' only makes the code 0.00038% slower. Effectively making the previous code slower because of the branches.
Who would've tought