Multiple Particle Systems

multiple-particle-systems.pde
/**
 * Multiple Particle Systems
 * by Daniel Shiffman.
 *
 * Click the mouse to generate a burst of particles
 * at mouse position.
 *
 * Each burst is one instance of a particle system
 * with Particles and CrazyParticles (a subclass of Particle).
 * Note use of Inheritance and Polymorphism.
 */

ArrayList<ParticleSystem> systems;

void setup() {
  size(640, 360);
}

void draw() {
  background(0);
  for (ParticleSystem* ps : systems) {
    ps->run();
    ps->addParticle();
  }
  if (systems.isEmpty()) {
    fill(255);
    textAlign(CENTER);
    text("click mouse to add particle systems", width/2, height/2);
  }
}

void mousePressed() {
  systems.add(new ParticleSystem(1, PVector(mouseX, mouseY)));
}