From 829a929a6430370a20898b00175b00a7f69d90c5 Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Tue, 20 Dec 2011 22:57:00 +0100 Subject: [PATCH] force about 4 origin sends per player per frame "to make sure" (to better handle mispredictions) --- qcsrc/csqcmodel/settings.qh | 2 ++ qcsrc/csqcmodel/sv_model.qc | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/qcsrc/csqcmodel/settings.qh b/qcsrc/csqcmodel/settings.qh index a687dfb90..257676db7 100644 --- a/qcsrc/csqcmodel/settings.qh +++ b/qcsrc/csqcmodel/settings.qh @@ -40,6 +40,8 @@ CSQCModel_Hook_PreDraw(isplayer, islocalplayer); #define CSQCPLAYER_HOOK_POSTCAMERASETUP +#define CSQCPLAYER_FORCE_UPDATES 0.25 + // mod must define: //vector PL_MIN = ...; //vector PL_MAX = ...; diff --git a/qcsrc/csqcmodel/sv_model.qc b/qcsrc/csqcmodel/sv_model.qc index 164c54773..1c214e0ab 100644 --- a/qcsrc/csqcmodel/sv_model.qc +++ b/qcsrc/csqcmodel/sv_model.qc @@ -49,6 +49,9 @@ float CSQCModel_Send(entity to, float sf) return TRUE; } +#ifdef CSQCPLAYER_FORCE_UPDATES +.float csqcmodel_nextforcedupdate; +#endif void CSQCModel_CheckUpdate() { // some nice flags for CSQCMODEL_IF @@ -56,6 +59,14 @@ void CSQCModel_CheckUpdate() float islocalplayer = isplayer; // we set BOTH to 1 here as we need the sendflags float isnolocalplayer = isplayer; // we set BOTH to 1 here as we need the sendflags +#ifdef CSQCPLAYER_FORCE_UPDATES + if(isplayer && time > self.csqcmodel_nextforcedupdate) + { + self.SendFlags |= CSQCMODEL_PROPERTY_ORIGIN; + self.csqcmodel_nextforcedupdate = time + CSQCPLAYER_FORCE_UPDATES * (0.5 + random()); // ensure about 4 origin sends per sec + } +#endif + if(self.effects & EF_RESTARTANIM_BIT) { self.SendFlags |= CSQCMODEL_PROPERTY_FRAME | CSQCMODEL_PROPERTY_FRAME2; // full anim resend please -- 2.39.2