Particle engine now uses a pool of available particles, which are allocated in the constructor. This stops the program lagging when a large amount of particles are requested.