IntervalEntityProcessingSystem abstract class
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.
abstract class IntervalEntityProcessingSystem extends IntervalEntitySystem { /** * Create a new [IntervalEntityProcessingSystem]. It requires at least one component. */ IntervalEntityProcessingSystem(int interval, Aspect aspect) : super(interval, aspect); /** * Process an [entity] this system is interested in. */ void processEntity(Entity entity); void processEntities(ReadOnlyBag<Entity> entities) => entities.forEach((entity) => processEntity(entity)); }
Extends
EntitySystem > IntervalEntitySystem > IntervalEntityProcessingSystem
Constructors
new IntervalEntityProcessingSystem(int interval, Aspect aspect) #
Create a new IntervalEntityProcessingSystem. It requires at least one component.
IntervalEntityProcessingSystem(int interval, Aspect aspect) : super(interval, aspect);
Properties
final num delta #
Returns the accumulated delta since the system was last invoked.
num get delta => _delta;
Methods
void begin() #
Called before processing of entities begins.
void begin() {}
bool checkProcessing() #
Returns true if the system should be processed, false if not.
bool checkProcessing() { _acc += world.delta; _delta += world.delta; if(_acc >= _interval) { _acc -= _interval; return true; } return false; }
void deleted(Entity e) #
void deleted(Entity e) { if (_contains(e)) { _removeFromSystem(e); } }
void disabled(Entity e) #
void disabled(Entity e) { if (_contains(e)) { _removeFromSystem(e); } }
void end() #
Resets the accumulated delta to 0.
Call super.end()
if you overwrite this function.
void end() { _delta = 0; }
void initialize() #
Override to implement code that gets executed when systems are initialized.
void initialize() {}
void inserted(Entity entity) #
Called if the system has received an entity it is interested in, e.g. created or a component was added to it.
void inserted(Entity entity) {}
void process() #
This is the only method that is supposed to be called from outside the library,
void process() { if(checkProcessing()) { begin(); processEntities(_actives.readOnly); end(); } }
void processEntities(ReadOnlyBag<Entity> entities) #
Any implementing entity system must implement this method and the logic to process the given entities of the system.
void processEntities(ReadOnlyBag<Entity> entities) => entities.forEach((entity) => processEntity(entity));
void removed(Entity entity) #
Called if an entity was removed from this system, e.g. deleted or had one of it's components removed.
void removed(Entity entity) {}