class ParticleSystem { ArrayList particles; Vector3D origin; float theta; ParticleSystem(int num) { particles = new ArrayList(); for(int i = 0; i < num; i++) { origin = new Vector3D(cos(i)*90.0, sin(i)*90.0); particles.add(new Particle(origin, new Vector3D(random(-4,4),random(-4,4)), new Vector3D(0,0),1)); } } void run() { for(int i = 0; i < 36; i++) { origin = new Vector3D(cos(i)*40.0, sin(i)*40.0); particles.add(new Particle(origin, new Vector3D(random(-2,2),random(-2,2)), new Vector3D(0,0),1)); } for ( int i = particles.size()-1; i >= 0; i--) { Particle p = (Particle) particles.get(i); p.run(); if(p.dead()) { particles.remove(i); } } } void addParticle() { particles.add(new Particle(origin, new Vector3D(random(-2,2),random(-2,2)), new Vector3D(0,0),1)); } void addParticle(Particle p) { particles.add(p); } boolean dead() { if(particles.isEmpty()) { return true; } else { return false; } } }