mirror of
https://git.code.sf.net/p/quake/newtree
synced 2024-11-21 19:51:18 +00:00
Clear packet entities when they are removed. This fixes a bug in particle
trails, and possibly others as well. Eliminate cl_oldvisedicts and cl_visedicts_list, change cl_visedicts's definition to compensate. It isn't used any more, so they just waste memory.
This commit is contained in:
parent
4cde7461b1
commit
6da731fec1
3 changed files with 10 additions and 12 deletions
|
@ -49,9 +49,8 @@ qboolean CL_DemoBehind(void);
|
||||||
void CL_BeginServerConnect(void);
|
void CL_BeginServerConnect(void);
|
||||||
|
|
||||||
#define MAX_VISEDICTS 256
|
#define MAX_VISEDICTS 256
|
||||||
extern int cl_numvisedicts, cl_oldnumvisedicts;
|
extern int cl_numvisedicts;
|
||||||
extern entity_t **cl_visedicts, **cl_oldvisedicts;
|
extern entity_t *cl_visedicts[MAX_VISEDICTS];
|
||||||
extern entity_t *cl_visedicts_list[2][MAX_VISEDICTS];
|
|
||||||
|
|
||||||
extern char emodel_name[], pmodel_name[], prespawn_name[], modellist_name[], soundlist_name[];
|
extern char emodel_name[], pmodel_name[], prespawn_name[], modellist_name[], soundlist_name[];
|
||||||
|
|
||||||
|
|
|
@ -440,6 +440,7 @@ CL_ParsePacketEntities (qboolean delta)
|
||||||
if (newindex >= MAX_PACKET_ENTITIES)
|
if (newindex >= MAX_PACKET_ENTITIES)
|
||||||
Host_EndGame ("CL_ParsePacketEntities: newindex == MAX_PACKET_ENTITIES");
|
Host_EndGame ("CL_ParsePacketEntities: newindex == MAX_PACKET_ENTITIES");
|
||||||
CL_ParseDelta (&cl_baselines[newnum], &newp->entities[newindex], word);
|
CL_ParseDelta (&cl_baselines[newnum], &newp->entities[newindex], word);
|
||||||
|
|
||||||
newindex++;
|
newindex++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -449,11 +450,13 @@ CL_ParsePacketEntities (qboolean delta)
|
||||||
cl.validsequence = 0;
|
cl.validsequence = 0;
|
||||||
Con_Printf ("WARNING: delta on full update");
|
Con_Printf ("WARNING: delta on full update");
|
||||||
}
|
}
|
||||||
if (word & U_REMOVE) {
|
if (word & U_REMOVE) { // Clear the entity
|
||||||
|
entity_t *ent = &cl_packet_ents[newnum];
|
||||||
|
memset (ent, 0, sizeof (entity_t));
|
||||||
oldindex++;
|
oldindex++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Con_Printf ("delta %i\n",newnum);
|
// Con_Printf ("delta %i\n", newnum);
|
||||||
CL_ParseDelta (&oldp->entities[oldindex], &newp->entities[newindex], word);
|
CL_ParseDelta (&oldp->entities[oldindex], &newp->entities[newindex], word);
|
||||||
newindex++;
|
newindex++;
|
||||||
oldindex++;
|
oldindex++;
|
||||||
|
@ -512,6 +515,7 @@ CL_LinkPacketEntities (void)
|
||||||
ent = CL_NewTempEntity ();
|
ent = CL_NewTempEntity ();
|
||||||
if (!ent)
|
if (!ent)
|
||||||
break; // object list is full
|
break; // object list is full
|
||||||
|
|
||||||
*ent = &cl_packet_ents[s1->number];
|
*ent = &cl_packet_ents[s1->number];
|
||||||
|
|
||||||
(*ent)->keynum = s1->number;
|
(*ent)->keynum = s1->number;
|
||||||
|
@ -1131,10 +1135,6 @@ CL_EmitEntities (void)
|
||||||
if (!cl.validsequence)
|
if (!cl.validsequence)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cl_oldnumvisedicts = cl_numvisedicts;
|
|
||||||
cl_oldvisedicts = cl_visedicts_list[!(cls.netchan.incoming_sequence & 1)];
|
|
||||||
cl_visedicts = cl_visedicts_list[cls.netchan.incoming_sequence & 1];
|
|
||||||
|
|
||||||
cl_numvisedicts = 0;
|
cl_numvisedicts = 0;
|
||||||
|
|
||||||
CL_LinkPlayers ();
|
CL_LinkPlayers ();
|
||||||
|
|
|
@ -166,9 +166,8 @@ dlight_t cl_dlights[MAX_DLIGHTS];
|
||||||
// refresh list
|
// refresh list
|
||||||
// this is double buffered so the last frame
|
// this is double buffered so the last frame
|
||||||
// can be scanned for oldorigins of trailing objects
|
// can be scanned for oldorigins of trailing objects
|
||||||
int cl_numvisedicts, cl_oldnumvisedicts;
|
int cl_numvisedicts;
|
||||||
entity_t **cl_visedicts, **cl_oldvisedicts;
|
entity_t *cl_visedicts[MAX_VISEDICTS];
|
||||||
entity_t *cl_visedicts_list[2][MAX_VISEDICTS];
|
|
||||||
|
|
||||||
double connect_time = -1; // for connection retransmits
|
double connect_time = -1; // for connection retransmits
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue