X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Flib%2Fcsqcmodel%2Fsv_model.qc;h=b02df19e0015a25a0f96df60d8abe5a3f5984976;hp=cadb77467cd97605131d50edd425d8b03508dd9d;hb=42a9e3d7ece2c716e5cd6899e90841acb7fb891b;hpb=43eba8ca70f00458db385630f86009f6d7fa849a diff --git a/qcsrc/lib/csqcmodel/sv_model.qc b/qcsrc/lib/csqcmodel/sv_model.qc index cadb77467..b02df19e0 100644 --- a/qcsrc/lib/csqcmodel/sv_model.qc +++ b/qcsrc/lib/csqcmodel/sv_model.qc @@ -22,34 +22,31 @@ #include "sv_model.qh" #include "common.qh" -#include "../../common/animdecide.qh" -#include "../../common/constants.qh" -#include "../../common/util.qh" -#include "../../server/constants.qh" -#include "../../server/defs.qh" +#include +#include +#include +#include +#include // generic CSQC model code -bool CSQCModel_Send(entity to, int sf) -{SELFPARAM(); +bool CSQCModel_Send(entity this, entity to, int sf) +{ // some nice flags for CSQCMODEL_IF - float isplayer = (IS_CLIENT(self)); - float islocalplayer = (self == to); - float isnolocalplayer = (isplayer && (self != to)); - - unused_float = isplayer; - unused_float = islocalplayer; - unused_float = isnolocalplayer; + noref bool isplayer = IS_CLIENT(this); + noref bool islocalplayer = (this == to); + noref bool isnolocalplayer = (isplayer && (this != to)); WriteHeader(MSG_ENTITY, ENT_CLIENT_MODEL); WriteInt24_t(MSG_ENTITY, sf); + WriteByte(MSG_ENTITY, isplayer); #define CSQCMODEL_IF(cond) if(cond) { #define CSQCMODEL_ENDIF } #define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ if(sf & flag) \ { \ - w(MSG_ENTITY, self.csqcmodel_##f); \ + w(MSG_ENTITY, this.csqcmodel_##f); \ } #define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) CSQCMODEL_PROPERTY(flag,t,r,w,f) ALLPROPERTIES @@ -67,7 +64,7 @@ bool CSQCModel_Send(entity to, int sf) void CSQCModel_CheckUpdate(entity e) { // some nice flags for CSQCMODEL_IF - float isplayer = (IS_CLIENT(e)); + float isplayer = IS_CLIENT(e); 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 @@ -79,7 +76,7 @@ void CSQCModel_CheckUpdate(entity e) if(isplayer && time > e.csqcmodel_nextforcedupdate) { e.SendFlags |= CSQCMODEL_PROPERTY_ORIGIN; - e.csqcmodel_nextforcedupdate = time + CSQCPLAYER_FORCE_UPDATES * (0.5 + random()); // ensure about 4 origin sends per sec + e.csqcmodel_nextforcedupdate = time + (1 / (CSQCPLAYER_FORCE_UPDATES)) * (0.5 + random()); // ensure about 4 origin sends per sec } #endif @@ -124,7 +121,8 @@ void CSQCModel_CheckUpdate(entity e) void CSQCModel_LinkEntity(entity e) { - e.SendEntity = CSQCModel_Send; + e.SendEntity = SendEntity_self; + e.SendEntity3 = CSQCModel_Send; e.SendFlags = 0xFFFFFF; CSQCModel_CheckUpdate(e); } @@ -132,4 +130,5 @@ void CSQCModel_LinkEntity(entity e) void CSQCModel_UnlinkEntity(entity e) { e.SendEntity = func_null; + e.SendEntity3 = func_null; }