fixes to particle emitting (temp?)
build fixes to SW parsing fixes git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@1299 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
347311db8c
commit
eb06704511
14 changed files with 46 additions and 20 deletions
|
@ -1663,7 +1663,7 @@ void CL_LinkPacketEntities (void)
|
|||
}
|
||||
|
||||
// add automatic particle trails
|
||||
if (!model || (!(model->flags&~EF_ROTATE) && model->particletrail<0))
|
||||
if (!model || (!(model->flags&~EF_ROTATE) && model->particletrail<0 && model->particleeffect<0))
|
||||
continue;
|
||||
|
||||
if (!cls.allow_anyparticles && !(model->flags & ~EF_ROTATE))
|
||||
|
@ -1710,6 +1710,15 @@ void CL_LinkPacketEntities (void)
|
|||
P_ParticleTrail (old_origin, ent->origin, model->particletrail, &cl.lerpents[s1->number].trailstate);
|
||||
}
|
||||
|
||||
{
|
||||
extern cvar_t gl_part_flame;
|
||||
if (cls.allow_anyparticles && gl_part_flame.value)
|
||||
{
|
||||
P_EmitEffect (ent->origin, model->particleeffect, &(cl.lerpents[s1->number].emitstate));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//dlights are not so customisable.
|
||||
if (r_rocketlight.value)
|
||||
{
|
||||
|
|
|
@ -131,9 +131,11 @@ char cl_predictiongroup[] = "Client side prediction";
|
|||
client_static_t cls;
|
||||
client_state_t cl;
|
||||
|
||||
// alot of this should probably be dynamically allocated
|
||||
entity_state_t cl_baselines[MAX_EDICTS];
|
||||
efrag_t cl_efrags[MAX_EFRAGS];
|
||||
entity_t cl_static_entities[MAX_STATIC_ENTITIES];
|
||||
trailstate_t *cl_static_emit[MAX_STATIC_ENTITIES];
|
||||
lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
||||
//lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
||||
dlight_t cl_dlights[MAX_DLIGHTS];
|
||||
|
|
|
@ -2139,6 +2139,7 @@ void CL_ParseStatic (int version)
|
|||
if (cl_static_entities[i].keynum == es.number)
|
||||
{
|
||||
R_RemoveEfrags (&cl_static_entities[i]);
|
||||
P_DelinkTrailstate (&cl_static_emit[i]);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -2154,6 +2155,7 @@ void CL_ParseStatic (int version)
|
|||
}
|
||||
ent = &cl_static_entities[i];
|
||||
memset(ent, 0, sizeof(*ent));
|
||||
cl_static_emit[i] = NULL;
|
||||
|
||||
ent->keynum = es.number;
|
||||
|
||||
|
|
|
@ -401,7 +401,9 @@ void CL_AddBeam (int tent, int ent, vec3_t start, vec3_t end) //fixme: use TE_ n
|
|||
}
|
||||
}
|
||||
|
||||
if (cl_beam_trace.value && etype >= 0 && cls.state == ca_active && P_TypeIsLoaded(etype))
|
||||
if (etype >= 0 && cls.state == ca_active && P_TypeIsLoaded(etype))
|
||||
{
|
||||
if (cl_beam_trace.value)
|
||||
{
|
||||
VectorSubtract(end, start, normal);
|
||||
VectorNormalize(normal);
|
||||
|
@ -409,6 +411,12 @@ void CL_AddBeam (int tent, int ent, vec3_t start, vec3_t end) //fixme: use TE_ n
|
|||
if (!TraceLineN(start, extra, impact, normal))
|
||||
etype = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
VectorCopy(end, impact);
|
||||
normal[0] = normal[1] = normal[2] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
b = CL_NewBeam(ent, -1);
|
||||
if (!b)
|
||||
|
|
|
@ -610,6 +610,7 @@ extern client_state_t cl;
|
|||
extern entity_state_t cl_baselines[MAX_EDICTS];
|
||||
extern efrag_t cl_efrags[MAX_EFRAGS];
|
||||
extern entity_t cl_static_entities[MAX_STATIC_ENTITIES];
|
||||
extern trailstate_t *cl_static_emit[MAX_STATIC_ENTITIES];
|
||||
extern lightstyle_t cl_lightstyle[MAX_LIGHTSTYLES];
|
||||
extern dlight_t cl_dlights[MAX_DLIGHTS];
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ typedef struct q2centity_s
|
|||
// float trailcount; // for diminishing grenade trails
|
||||
vec3_t lerp_origin; // for trails (variable hz)
|
||||
|
||||
int fly_stoptime;
|
||||
// int fly_stoptime;
|
||||
} q2centity_t;
|
||||
|
||||
|
||||
|
|
|
@ -277,6 +277,16 @@ void R_StoreEfrags (efrag_t **ppefrag)
|
|||
|
||||
// mark that we've recorded this entity for this frame
|
||||
pent->visframe = r_framecount;
|
||||
|
||||
// emit particles for statics (we don't need to cheat check statics)
|
||||
if (clmodel->particleeffect >= 0)
|
||||
{
|
||||
// TODO: this is ugly.. assumes ent is in static entities, and subtracts
|
||||
// pointer math to get an index to use in cl_static emit
|
||||
// there needs to be a cleaner method for this
|
||||
int i = (int)(pent - cl_static_entities);
|
||||
P_EmitEffect(pent->origin, clmodel->particleeffect, &(cl_static_emit[i]));
|
||||
}
|
||||
}
|
||||
|
||||
ppefrag = &pefrag->leafnext;
|
||||
|
|
|
@ -2383,8 +2383,9 @@ int P_RunParticleEffectTypeString (vec3_t org, vec3_t dir, float count, char *na
|
|||
void P_EmitEffect (vec3_t pos, int type, trailstate_t **tsk)
|
||||
{
|
||||
#ifdef SIDEVIEWS
|
||||
if (r_secondaryview) //this is called when the models are actually drawn.
|
||||
return;
|
||||
// is this even needed?
|
||||
// if (r_secondaryview==1)
|
||||
// return;
|
||||
#endif
|
||||
if (cl.paused)
|
||||
return;
|
||||
|
|
|
@ -31,7 +31,6 @@ extern cvar_t gl_overbright;
|
|||
extern cvar_t r_fb_bmodels;
|
||||
extern cvar_t gl_part_flame;
|
||||
|
||||
extern cvar_t gl_part_flame;
|
||||
extern cvar_t gl_maxshadowlights;
|
||||
extern cvar_t r_shadow_realtime_world;
|
||||
extern cvar_t r_shadow_realtime_world_lightmaps;
|
||||
|
|
|
@ -918,9 +918,6 @@ void GLR_DrawEntitiesOnList (void)
|
|||
{
|
||||
if (gl_part_flame.value)
|
||||
{
|
||||
P_EmitEffect (currententity->origin,
|
||||
currententity->model->particleeffect,
|
||||
&(cl.lerpents[currententity->keynum].emitstate));
|
||||
if (currententity->model->engineflags & MDLF_ENGULPHS)
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -384,7 +384,7 @@ void D_DrawParticleTrans (particle_t *pparticle, blendmode_t blendmode)
|
|||
if (pparticle->alpha < TRANS_LOWER_CAP)
|
||||
return;
|
||||
|
||||
if (pparticle->alpha > TRANS_UPPER_CAP && blendmode == BM_MERGE)
|
||||
if (pparticle->alpha > TRANS_UPPER_CAP && blendmode == BM_BLEND)
|
||||
{
|
||||
D_DrawParticle(pparticle);
|
||||
return;
|
||||
|
|
|
@ -1081,7 +1081,7 @@ void D_DrawSprite (void)
|
|||
D_SpriteDrawSpans (sprite_spans);
|
||||
else
|
||||
{
|
||||
D_SetTransLevel(currententity->alpha, BM_MERGE);
|
||||
D_SetTransLevel(currententity->alpha, BM_BLEND);
|
||||
D_SpriteDrawSpansTrans (sprite_spans);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -884,7 +884,7 @@ void R_AliasDrawModel (alight_t *plighting)
|
|||
}
|
||||
else
|
||||
{
|
||||
D_SetTransLevel(currententity->alpha, BM_MERGE);
|
||||
D_SetTransLevel(currententity->alpha, BM_BLEND);
|
||||
transbackfac = 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -701,9 +701,6 @@ void SWR_DrawEntitiesOnList (void)
|
|||
{
|
||||
if (gl_part_flame.value)
|
||||
{
|
||||
P_EmitEffect (currententity->origin,
|
||||
currententity->model->particleeffect,
|
||||
&(cl.lerpents[currententity->keynum].emitstate));
|
||||
if (currententity->model->engineflags & MDLF_ENGULPHS)
|
||||
continue;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue