static int recoversendflags[MAX_EDICTS];
csqcentityframedb_t *d;
+ if(client->csqcentityframe_lastreset < 0)
+ return;
+ if(framenum < client->csqcentityframe_lastreset)
+ return; // no action required, as we resent that data anyway
+
// is our frame out of history?
ringfirst = client->csqcentityframehistory_next; // oldest entry
ringlast = (ringfirst + NUM_CSQCENTITYDB_FRAMES - 1) % NUM_CSQCENTITYDB_FRAMES; // most recently added entry
Con_DPrintf("Lost frame = %d\n", framenum);
Con_DPrintf("Entity DB = %d to %d\n", client->csqcentityframehistory[ringfirst].framenum, client->csqcentityframehistory[ringlast].framenum);
EntityFrameCSQC_LostAllFrames(client);
+ client->csqcentityframe_lastreset = -1;
}
return;
}
int dbframe = EntityFrameCSQC_AllocFrame(client, framenum);
csqcentityframedb_t *db = &client->csqcentityframehistory[dbframe];
+ if(client->csqcentityframe_lastreset < 0)
+ client->csqcentityframe_lastreset = framenum;
+
maxsize -= 24; // always fit in an empty svc_entities message (for packet loss detection!)
// if this server progs is not CSQC-aware, return early
unsigned char csqcentityglobalhistory[MAX_EDICTS]; // set to 1 if the entity was ever csqc networked to the client, and never reset back to 0
csqcentityframedb_t csqcentityframehistory[NUM_CSQCENTITYDB_FRAMES];
int csqcentityframehistory_next;
+ int csqcentityframe_lastreset;
/// prevent animated names
float nametime;