/** * Update the system, request the assigned emitters update the particles * * @param delta The amount of time thats passed since last update in milliseconds */ public void update(int delta) { if ((sprite == null) && (defaultImageName != null)) { loadSystemParticleImage(); } ArrayList removeMe = new ArrayList(); for (int i = 0; i < emitters.size(); i++) { ParticleEmitter emitter = (ParticleEmitter) emitters.get(i); if (emitter.isEnabled()) { emitter.update(this, delta); if (removeCompletedEmitters) { if (emitter.completed()) { removeMe.add(emitter); particlesByEmitter.remove(emitter); } } } } emitters.removeAll(removeMe); pCount = 0; if (!particlesByEmitter.isEmpty()) { Iterator it = particlesByEmitter.values().iterator(); while (it.hasNext()) { ParticlePool pool = (ParticlePool) it.next(); for (int i = 0; i < pool.particles.length; i++) { if (pool.particles[i].life > 0) { pool.particles[i].update(delta); pCount++; } } } } }