- for(int p = 0; p < particles.size(); p++)
- {
- particles[p]->pos.x += sin(particles[p]->angle) * vel.x * elapsed_time;
- particles[p]->pos.y += cos(particles[p]->angle) * vel.y * elapsed_time;
+ for(std::vector<Particle*>::iterator i = particles.begin();
+ i != particles.end(); ) {
+ (*i)->pos.x += (*i)->vel.x * elapsed_time;
+ (*i)->pos.y += (*i)->vel.y * elapsed_time;
+
+ (*i)->vel.x += accel.x * elapsed_time;
+ (*i)->vel.y += accel.y * elapsed_time;
+
+ if((*i)->pos.x < camera.x || (*i)->pos.x > screen->w + camera.x ||
+ (*i)->pos.y < camera.y || (*i)->pos.y > screen->h + camera.y) {
+ delete (*i);
+ i = particles.erase(i);
+ } else {
+ ++i;