1
0
Fork 0
forked from fte/fteqw

better solution

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@722 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
TimeServ 2005-01-04 19:48:26 +00:00
parent eede8928f3
commit 8b17508ae4

View file

@ -305,7 +305,7 @@ void R_ParticleEffect_f(void)
char *var, *value; char *var, *value;
char *buf; char *buf;
particle_t *parts; particle_t *parts;
beamseg_t *beamsegs, *btemp; beamseg_t *beamsegs;
skytris_t *st; skytris_t *st;
part_type_t *ptype; part_type_t *ptype;
@ -350,30 +350,13 @@ void R_ParticleEffect_f(void)
ptype->particles = parts; ptype->particles = parts;
} }
// clear beam list.. bit more complex // go with a lazy clear of list.. mark everything as DEAD and let
while (ptype->beams && !(ptype->beams->flags & BS_LASTSEG)) // the beam rendering handle removing nodes
beamsegs = ptype->beams;
while (beamsegs)
{ {
beamsegs = ptype->beams->next; beamsegs->flags |= BS_DEAD;
ptype->beams->next = free_beams; beamsegs = beamsegs->next;
free_beams = ptype->beams;
ptype->beams = beamsegs;
}
btemp = ptype->beams;
while (btemp)
{
if (btemp->flags & BS_LASTSEG) // prevent runaway pointers
{
btemp->flags |= BS_DEAD;
btemp = btemp->next;
}
else
{
beamsegs = btemp->next;
btemp->next = free_beams;
free_beams = btemp;
btemp = beamsegs;
}
} }
beamsegs = ptype->beams; beamsegs = ptype->beams;