]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_explosion.c
fix for explosions sometimes not being freed at very high framerates
[xonotic/darkplaces.git] / r_explosion.c
index 4fa758adb2710f796877b40313733bdb8bfd00d1..8bfd09d7b7f026e5836330577c74bf21b75f6166 100644 (file)
@@ -173,7 +173,7 @@ void R_NewExplosion(vec3_t org)
        fractalnoisequick(noise, EXPLOSIONGRID, 4);
        for (i = 0;i < MAX_EXPLOSIONS;i++)
        {
-               if (explosion[i].alpha <= 0.0f)
+               if (explosion[i].alpha <= 0.01f)
                {
                        explosion[i].starttime = cl.time;
                        explosion[i].time = explosion[i].starttime - 0.1;
@@ -338,6 +338,11 @@ void R_MoveExplosion(explosion_t *e/*, explosiongas_t **list, explosiongas_t **l
        frametime = cl.time - e->time;
        e->time = cl.time;
        e->alpha = EXPLOSIONFADESTART - (cl.time - e->starttime) * EXPLOSIONFADERATE;
+       if (e->alpha <= 0.01f)
+       {
+               e->alpha = -1;
+               return;
+       }
        frictionscale = 1 - frametime;
        frictionscale = bound(0, frictionscale, 1);
        for (i = 0;i < EXPLOSIONVERTS;i++)