package com.siondream.core.entity.systems; import com.badlogic.gdx.utils.Array; import com.siondream.core.Env; import com.siondream.core.entity.components.StateComponent; import ashley.core.Engine; import ashley.core.Entity; import ashley.core.Family; import ashley.systems.IteratingSystem; public class DisposingSystem extends IteratingSystem { Array<Entity> toRemove; int eraseID; public DisposingSystem() { super(Family.getFamilyFor(StateComponent.class)); toRemove = new Array<Entity>(); eraseID = StateComponent.getID("erase"); } @Override public void update(float deltaTime) { super.update(deltaTime); Engine engine = Env.game.getEngine(); for (Entity entity : toRemove) { engine.removeEntity(entity); } toRemove.clear(); } @Override public void processEntity(Entity entity, float deltaTime) { StateComponent state = entity.getComponent(StateComponent.class); if (state.id == eraseID) { toRemove.add(entity); } } }