34 std::vector<ecs::Entity> explosionsToRemove;
43 if (!transform || !rect || !texture || !scale)
46 explosion.current_time += dt;
47 if (explosion.current_time >= explosion.frame_duration)
49 explosion.current_time = 0.0f;
50 explosion.current_frame = (explosion.current_frame + 1) % explosion.total_frames;
52 int frame_x = (explosion.current_frame % explosion.frames_per_row) *
53 static_cast<int>(explosion.frame_width);
54 int frame_y = (explosion.current_frame / explosion.frames_per_row) *
55 static_cast<int>(explosion.frame_height);
57 rect->pos_x =
static_cast<float>(frame_x);
58 rect->pos_y =
static_cast<float>(frame_y);
62 transform->y, scale->x, scale->y,
static_cast<int>(rect->pos_x),
63 static_cast<int>(rect->pos_y),
static_cast<int>(rect->size_x),
64 static_cast<int>(rect->size_y));
67 explosion.current_lifetime += dt;
68 if (explosion.current_lifetime >= explosion.lifetime)
70 explosionsToRemove.push_back(entity);