- for (i = 0;i < MAX_EXPLOSIONS;i++)
- if (r_refdef.time < explosion[i].endtime)
- R_MeshQueue_AddTransparent(explosion[i].origin, R_DrawExplosion_TransparentCallback, NULL, i, NULL);
+
+ for (i = 0;i < numexplosions;i++)
+ {
+ if (explosion[i].alpha)
+ {
+ R_MoveExplosion(&explosion[i]);
+ if (explosion[i].alpha)
+ R_MeshQueue_AddTransparent(explosion[i].origin, R_DrawExplosion_TransparentCallback, NULL, i, NULL);
+ }
+ }
+ while (numexplosions > 0 && explosion[i-1].alpha <= 0)
+ numexplosions--;