mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-10 22:51:57 +00:00
delink particle states on r_particlesystem change, correctly use default trails on models
git-svn-id: https://svn.code.sf.net/p/fteqw/code/branches/wip@3822 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
027c09bd6a
commit
9d4586b532
5 changed files with 35 additions and 7 deletions
|
@ -1590,6 +1590,16 @@ static void CL_UpdateNetFrameLerpState(qboolean force, unsigned int curframe, le
|
|||
}
|
||||
}
|
||||
|
||||
void CL_ClearLerpEntsParticleState(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < cl.maxlerpents; i++)
|
||||
{
|
||||
pe->DelinkTrailstate(&(cl.lerpents[i].trailstate));
|
||||
pe->DelinkTrailstate(&(cl.lerpents[i].emitstate));
|
||||
}
|
||||
}
|
||||
|
||||
void CL_LinkStaticEntities(void *pvs)
|
||||
{
|
||||
int i;
|
||||
|
@ -2198,11 +2208,9 @@ void CL_LinkPacketEntities (void)
|
|||
}
|
||||
}
|
||||
|
||||
if (model->particletrail >= 0)
|
||||
{
|
||||
if (pe->ParticleTrail (old_origin, ent->origin, model->particletrail, &(le->trailstate)))
|
||||
if (model->particletrail == P_INVALID || pe->ParticleTrail (old_origin, ent->origin, model->particletrail, &(le->trailstate)))
|
||||
if (model->traildefaultindex >= 0)
|
||||
pe->ParticleTrailIndex(old_origin, ent->origin, model->traildefaultindex, 0, &(le->trailstate));
|
||||
}
|
||||
|
||||
{
|
||||
extern cvar_t gl_part_flame;
|
||||
|
|
|
@ -346,6 +346,17 @@ void CL_ShutdownTEnts (void)
|
|||
BZ_Free(ae);
|
||||
}
|
||||
}
|
||||
|
||||
void CL_ClearTEntParticleState (void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < beams_running; i++)
|
||||
{
|
||||
pe->DelinkTrailstate(&(cl_beams[i].trailstate));
|
||||
pe->DelinkTrailstate(&(cl_beams[i].emitstate));
|
||||
}
|
||||
}
|
||||
|
||||
void P_LoadedModel(model_t *mod)
|
||||
{
|
||||
struct associatedeffect *ae;
|
||||
|
|
|
@ -973,6 +973,7 @@ void DropPunchAngle (int pnum);
|
|||
void CL_RegisterParticles(void);
|
||||
void CL_InitTEnts (void);
|
||||
void CL_ClearTEnts (void);
|
||||
void CL_ClearTEntParticleState (void);
|
||||
void CL_ClearCustomTEnts(void);
|
||||
void CL_ParseCustomTEnt(void);
|
||||
void CL_ParseEffect (qboolean effect2);
|
||||
|
@ -1005,6 +1006,7 @@ void CL_LinkViewModel(void);
|
|||
void CL_LinkPlayers (void);
|
||||
void CL_LinkPacketEntities (void);
|
||||
void CL_LinkProjectiles (void);
|
||||
void CL_ClearLerpEntsParticleState (void);
|
||||
qboolean CL_MayLerp(void);
|
||||
|
||||
//
|
||||
|
|
|
@ -4048,10 +4048,11 @@ void CSQC_EntStateToCSQC(unsigned int flags, float lerptime, entity_state_t *src
|
|||
if (!(flags & RSES_NOTRAILS))
|
||||
{
|
||||
//use entnum as a test to see if its new (if the old origin isn't usable)
|
||||
if (ent->xv->entnum && model->particletrail >= 0)
|
||||
if (ent->xv->entnum)
|
||||
{
|
||||
if (pe->ParticleTrail (ent->v->origin, src->origin, model->particletrail, &(le->trailstate)))
|
||||
pe->ParticleTrailIndex(ent->v->origin, src->origin, model->traildefaultindex, 0, &(le->trailstate));
|
||||
if (model->particletrail == P_INVALID || pe->ParticleTrail (ent->v->origin, src->origin, model->particletrail, &(le->trailstate)))
|
||||
if (model->traildefaultindex >= 0)
|
||||
pe->ParticleTrailIndex(ent->v->origin, src->origin, model->traildefaultindex, 0, &(le->trailstate));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -82,6 +82,9 @@ void R_ParticleSystem_Callback(struct cvar_s *var, char *oldvalue)
|
|||
int i;
|
||||
if (pe)
|
||||
{
|
||||
CL_ClearTEntParticleState();
|
||||
CL_ClearLerpEntsParticleState();
|
||||
|
||||
pe->ShutdownParticles();
|
||||
}
|
||||
|
||||
|
@ -444,5 +447,8 @@ void P_DefaultTrail (model_t *model)
|
|||
model->traildefaultindex = 254;
|
||||
}
|
||||
else
|
||||
{
|
||||
model->particletrail = P_INVALID;
|
||||
model->traildefaultindex = -1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue