+void
+Particles::action(float elapsed_time)
+{
+ Vector camera = Sector::current()->camera->get_translation();
+
+ // update particles
+ for(std::vector<Particle*>::iterator i = particles.begin(); i < particles.end(); i++)
+ {
+ (*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);
+ particles.erase(i);
+ }
+ }
+
+ if((!timer.check() && !live_forever) || particles.size() == 0)
+ remove_me();
+}
+
+void
+Particles::draw(DrawingContext& context)
+{
+ // draw particles
+ for(std::vector<Particle*>::iterator i = particles.begin(); i < particles.end(); i++)
+ {
+ context.draw_filled_rect((*i)->pos, Vector(size,size), color, drawing_layer);
+ }
+}
+
+void load_object_gfx()
+{
+ img_trampoline = sprite_manager->load("trampoline");
+ img_trampoline->start_animation(0);
+ img_flying_platform = sprite_manager->load("flying_platform");