X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fobject%2Fparticles.cpp;h=36d3b6ef8652620fe3457e835e09d825141e1f4f;hb=d097f456b8ab4f42058545bdd4f8f676d151e974;hp=a51da08a1262aefa3724649ac858a478f5e8d983;hpb=eb9172b9d625b0c333d7ad406433d5d14129a2e6;p=supertux.git diff --git a/src/object/particles.cpp b/src/object/particles.cpp index a51da08a1..36d3b6ef8 100644 --- a/src/object/particles.cpp +++ b/src/object/particles.cpp @@ -24,6 +24,7 @@ #include "supertux/sector.hpp" #include "video/drawing_context.hpp" +//TODO: remove this function in favor of the one below Particles::Particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color_, int size_, float life_time, int drawing_layer_) : @@ -61,6 +62,44 @@ Particles::Particles(const Vector& epicenter, int min_angle, int max_angle, } } +Particles::Particles(const Vector& epicenter, int min_angle, int max_angle, + const float min_initial_velocity, const float max_initial_velocity, + const Vector& acceleration, int number, Color color_, + int size_, float life_time, int drawing_layer_) : + + accel(acceleration), + timer(), + live_forever(), + color(color_), + size(size_), + drawing_layer(drawing_layer_), + particles() +{ + if(life_time == 0) { + live_forever = true; + } else { + live_forever = false; + timer.start(life_time); + } + + // create particles + for(int p = 0; p < number; p++) + { + Particle* particle = new Particle; + particle->pos = epicenter; + + float velocity = (min_initial_velocity == max_initial_velocity) ? min_initial_velocity : + graphicsRandom.rand(min_initial_velocity, max_initial_velocity); + float angle = (min_angle == max_angle) ? min_angle * (M_PI / 180) : + graphicsRandom.rand(min_angle, max_angle) * (M_PI / 180); // convert to radians + // Note that angle defined as clockwise from vertical (up is zero degrees, right is 90 degrees) + particle->vel.x = (sin(angle)) * velocity; + particle->vel.y = (-cos(angle)) * velocity; + + particles.push_back(particle); + } +} + Particles::~Particles() { // free particles