Dart Documentationsystem_emitterSystem_Emitters

System_Emitters class

class System_Emitters extends EntityProcessingSystem {
 ComponentMapper<Emitter> _emitterMapper;
 num _dt = 0;

 System_Emitters() : super(Aspect.getAspectForAllOf([Emitter]));

 void initialize(){
   _emitterMapper = new ComponentMapper<Emitter>(Emitter, world);
 }

 void begin(){
   //TODO use an injected timer
   _dt = world.delta;
 }

 void processEntity(Entity entity) {
   var em = _emitterMapper.get(entity);
   var nb = em.counter(_dt);
   var ne = (em.genParticles != null) ? _genParticles(nb, em.genParticles) : _genEntities(nb);
   em.initializers.forEach((init) => init(_dt, entity, ne));
   ne.forEach((e) => world.addEntity(e));
//    em.particles.addAll(np);
//    em.activities.forEach((ue) => ue(_dt));
//    em.actions.forEach((up) => up(_dt, em.particles));
   if (em.once) entity.deleteFromWorld();
 }

 List<Entity> _genEntities(int nb) {
   return new List<Entity>.generate(nb, (i) => world.createEntity());
 }

 List<Entity> _genParticles(int nb, ParticlesConstructor pc) {
   var e = world.createEntity();
   e.addComponent(pc(nb));
   return new List<Entity>.filled(1, e);
 }

}

Extends

EntitySystem > EntityProcessingSystem > System_Emitters

Constructors

new System_Emitters() #

Create a new EntityProcessingSystem. It requires at least one component.

docs inherited from EntityProcessingSystem
System_Emitters() : super(Aspect.getAspectForAllOf([Emitter]));

Properties

final passive #

inherited from EntitySystem
get passive => _passive;

World world #

inherited from EntitySystem
World world

Methods

void added(Entity e) #

inherited from EntitySystem
void added(Entity e) => _check(e);

void begin() #

Called before processing of entities begins.

docs inherited from EntitySystem
void begin(){
 //TODO use an injected timer
 _dt = world.delta;
}

void changed(Entity e) #

inherited from EntitySystem
void changed(Entity e) => _check(e);

bool checkProcessing() #

inherited from EntityProcessingSystem

Returns true if the system should be processed, false if not.

docs inherited from EntitySystem
bool checkProcessing() => true;

void deleted(Entity e) #

inherited from EntitySystem
void deleted(Entity e) {
 if (_contains(e)) {
   _removeFromSystem(e);
 }
}

void disabled(Entity e) #

inherited from EntitySystem
void disabled(Entity e) {
 if (_contains(e)) {
   _removeFromSystem(e);
 }
}

void enabled(Entity e) #

inherited from EntitySystem
void enabled(Entity e) => _check(e);

void end() #

inherited from EntitySystem

Called after the processing of entities ends.

void end() {}

void initialize() #

Override to implement code that gets executed when systems are initialized.

docs inherited from EntitySystem
void initialize(){
 _emitterMapper = new ComponentMapper<Emitter>(Emitter, world);
}

void inserted(Entity entity) #

inherited from EntitySystem

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() #

inherited from EntitySystem

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) #

inherited from EntityProcessingSystem

Any implementing entity system must implement this method and the logic to process the given entities of the system.

docs inherited from EntitySystem
void processEntities(ReadOnlyBag<Entity> entities) => entities.forEach((entity) => processEntity(entity));

void processEntity(Entity entity) #

Process a entity this system is interested in.

docs inherited from EntityProcessingSystem
void processEntity(Entity entity) {
 var em = _emitterMapper.get(entity);
 var nb = em.counter(_dt);
 var ne = (em.genParticles != null) ? _genParticles(nb, em.genParticles) : _genEntities(nb);
 em.initializers.forEach((init) => init(_dt, entity, ne));
 ne.forEach((e) => world.addEntity(e));
//    em.particles.addAll(np);
//    em.activities.forEach((ue) => ue(_dt));
//    em.actions.forEach((up) => up(_dt, em.particles));
 if (em.once) entity.deleteFromWorld();
}

void removed(Entity entity) #

inherited from EntitySystem

Called if an entity was removed from this system, e.g. deleted or had one of it's components removed.

void removed(Entity entity) {}