mirror of
https://git.code.sf.net/p/quake/newtree
synced 2025-02-20 10:22:44 +00:00
Don't test for alpha death on particles that aren't alpha fading over time.
This commit is contained in:
parent
679b67ddd2
commit
bb8f25bb64
1 changed files with 26 additions and 20 deletions
|
@ -637,66 +637,72 @@ R_DrawParticles (void)
|
||||||
switch (part->type) {
|
switch (part->type) {
|
||||||
case pt_static:
|
case pt_static:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case pt_blob:
|
case pt_blob:
|
||||||
for (i = 0; i < 3; i++)
|
for (i = 0; i < 3; i++)
|
||||||
part->vel[i] += part->vel[i] * dvel;
|
part->vel[i] += part->vel[i] * dvel;
|
||||||
part->vel[2] -= grav;
|
part->vel[2] -= grav;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case pt_blob2:
|
case pt_blob2:
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
part->vel[i] -= part->vel[i] * dvel;
|
part->vel[i] -= part->vel[i] * dvel;
|
||||||
part->vel[2] -= grav;
|
part->vel[2] -= grav;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case pt_grav:
|
case pt_grav:
|
||||||
part->vel[2] -= grav;
|
part->vel[2] -= grav;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case pt_smoke:
|
case pt_smoke:
|
||||||
|
if ((part->alpha -= host_frametime * 128) < 1)
|
||||||
|
part->die = -1;
|
||||||
part->scale += host_frametime * 6;
|
part->scale += host_frametime * 6;
|
||||||
part->alpha -= host_frametime * 128;
|
|
||||||
break;
|
break;
|
||||||
case pt_smokecloud:
|
case pt_smokecloud:
|
||||||
|
if ((part->alpha -= host_frametime * 128) < 1)
|
||||||
|
part->die = -1;
|
||||||
part->scale += host_frametime * 60;
|
part->scale += host_frametime * 60;
|
||||||
part->alpha -= host_frametime * 128;
|
|
||||||
break;
|
break;
|
||||||
case pt_bloodcloud:
|
case pt_bloodcloud:
|
||||||
/*
|
/*
|
||||||
if (Mod_PointInLeaf(part->org, cl.worldmodel)->contents !=
|
if (Mod_PointInLeaf(part->org, cl.worldmodel)->contents != CONTENTS_EMPTY)
|
||||||
CONTENTS_EMPTY) { part->die = -1; break; } */
|
{
|
||||||
|
part->die = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
if ((part->alpha -= host_frametime * 64) < 1)
|
||||||
|
{
|
||||||
|
part->die = -1;
|
||||||
|
// extra break only helps here
|
||||||
|
break;
|
||||||
|
}
|
||||||
part->scale += host_frametime * 4;
|
part->scale += host_frametime * 4;
|
||||||
part->alpha -= host_frametime * 64;
|
|
||||||
part->vel[2] -= grav;
|
part->vel[2] -= grav;
|
||||||
break;
|
break;
|
||||||
case pt_fadespark:
|
case pt_fadespark:
|
||||||
part->alpha -= host_frametime * 256;
|
if ((part->alpha -= host_frametime * 256) < 1)
|
||||||
|
part->die = -1;
|
||||||
part->vel[2] -= grav;
|
part->vel[2] -= grav;
|
||||||
break;
|
break;
|
||||||
case pt_fadespark2:
|
case pt_fadespark2:
|
||||||
part->alpha -= host_frametime * 512;
|
if ((part->alpha -= host_frametime * 512) < 1)
|
||||||
|
part->die = -1;
|
||||||
part->vel[2] -= grav;
|
part->vel[2] -= grav;
|
||||||
break;
|
break;
|
||||||
case pt_fallfadespark:
|
case pt_fallfadespark:
|
||||||
part->alpha -= host_frametime * 256;
|
if ((part->alpha -= host_frametime * 256) < 1)
|
||||||
|
part->die = -1;
|
||||||
part->vel[2] -= fast_grav;
|
part->vel[2] -= fast_grav;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// LordHavoc: most particles already did this, consistency...
|
|
||||||
if (part->alpha < 1)
|
|
||||||
part->die = -1;
|
|
||||||
|
|
||||||
// LordHavoc: immediate removal of unnecessary particles (must be done to ensure compactor below operates properly in all cases)
|
// LordHavoc: immediate removal of unnecessary particles (must be done to ensure compactor below operates properly in all cases)
|
||||||
if (part->die < cl.time)
|
if (part->die <= cl.time)
|
||||||
freeparticles[j++] = part;
|
freeparticles[j++] = part;
|
||||||
}
|
}
|
||||||
k = 0;
|
k = 0;
|
||||||
while (maxparticle >= activeparticles) {
|
while (maxparticle >= activeparticles) {
|
||||||
*freeparticles[k++] = particles[maxparticle--];
|
*freeparticles[k++] = particles[maxparticle--];
|
||||||
while (maxparticle >= activeparticles
|
while (maxparticle >= activeparticles
|
||||||
&& particles[maxparticle].die < cl.time) maxparticle--;
|
&& particles[maxparticle].die <= cl.time)
|
||||||
|
maxparticle--;
|
||||||
}
|
}
|
||||||
numparticles = activeparticles;
|
numparticles = activeparticles;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue