So I saw someone commented it lags a lot, and since this using a little more 'complicated' spawning of particles, I figured I'd try to help you. So there are 2 main problems I see. (In no way bashing your code, just a fellow programmer trying to help you improve).
First thing is this method...