X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcsqcmodellib%2Fsv_model.qc;h=ebe0b6e8765558a76de059fb6eed63f385dfebb3;hb=7bd8f8562a392fda3ac881b1fbe2a35a5ef0f5c8;hp=ef47a54da35370694038574a498a851092142d86;hpb=c3f6bc06517a43e4de33d2a9148cdb36dbfc2ab8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/csqcmodellib/sv_model.qc b/qcsrc/csqcmodellib/sv_model.qc index ef47a54da..ebe0b6e87 100644 --- a/qcsrc/csqcmodellib/sv_model.qc +++ b/qcsrc/csqcmodellib/sv_model.qc @@ -20,10 +20,24 @@ * IN THE SOFTWARE. */ +#if defined(CSQC) +#elif defined(MENUQC) +#elif defined(SVQC) + #include "../dpdefs/progsdefs.qh" + #include "../dpdefs/dpextensions.qh" + #include "../common/constants.qh" + #include "../common/util.qh" + #include "../common/animdecide.qh" + #include "../server/constants.qh" + #include "../server/defs.qh" + #include "common.qh" + #include "sv_model.qh" +#endif + // generic CSQC model code -float CSQCModel_Send(entity to, float sf) -{ +bool CSQCModel_Send(entity to, int sf) +{SELFPARAM(); // some nice flags for CSQCMODEL_IF float isplayer = (IS_CLIENT(self)); float islocalplayer = (self == to); @@ -50,16 +64,16 @@ float CSQCModel_Send(entity to, float sf) #undef CSQCMODEL_ENDIF #undef CSQCMODEL_IF - return TRUE; + return true; } #ifdef CSQCPLAYER_FORCE_UPDATES .float csqcmodel_nextforcedupdate; #endif -void CSQCModel_CheckUpdate() +void CSQCModel_CheckUpdate(entity e) { // some nice flags for CSQCMODEL_IF - float isplayer = (IS_CLIENT(self)); + 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 @@ -68,43 +82,43 @@ void CSQCModel_CheckUpdate() unused_float = isnolocalplayer; #ifdef CSQCPLAYER_FORCE_UPDATES - if(isplayer && time > self.csqcmodel_nextforcedupdate) + if(isplayer && time > e.csqcmodel_nextforcedupdate) { - self.SendFlags |= CSQCMODEL_PROPERTY_ORIGIN; - self.csqcmodel_nextforcedupdate = time + CSQCPLAYER_FORCE_UPDATES * (0.5 + random()); // ensure about 4 origin sends per sec + e.SendFlags |= CSQCMODEL_PROPERTY_ORIGIN; + e.csqcmodel_nextforcedupdate = time + CSQCPLAYER_FORCE_UPDATES * (0.5 + random()); // ensure about 4 origin sends per sec } #endif - if(self.effects & EF_RESTARTANIM_BIT) + if(e.effects & EF_RESTARTANIM_BIT) { - self.SendFlags |= CSQCMODEL_PROPERTY_FRAME | CSQCMODEL_PROPERTY_FRAME2; // full anim resend please - self.effects &= ~EF_RESTARTANIM_BIT; + e.SendFlags |= CSQCMODEL_PROPERTY_FRAME | CSQCMODEL_PROPERTY_FRAME2; // full anim resend please + e.effects &= ~EF_RESTARTANIM_BIT; } - if(self.effects & EF_TELEPORT_BIT) + if(e.effects & EF_TELEPORT_BIT) { - self.SendFlags |= CSQCMODEL_PROPERTY_TELEPORTED; // no interpolation please - self.effects &= ~EF_TELEPORT_BIT; + e.SendFlags |= CSQCMODEL_PROPERTY_TELEPORTED; // no interpolation please + e.effects &= ~EF_TELEPORT_BIT; } #define CSQCMODEL_IF(cond) if(cond) { #define CSQCMODEL_ENDIF } #define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ { \ - t tmp = self.f; \ - if(tmp != self.csqcmodel_##f) \ + t tmp = e.f; \ + if(tmp != e.csqcmodel_##f) \ { \ - self.csqcmodel_##f = tmp; \ - self.SendFlags |= flag; \ + e.csqcmodel_##f = tmp; \ + e.SendFlags |= flag; \ } \ } #define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) \ { \ - t tmp = rint(bound(mi, s * self.f, ma) - mi); \ - if(tmp != self.csqcmodel_##f) \ + t tmp = rint(bound(mi, s * e.f, ma) - mi); \ + if(tmp != e.csqcmodel_##f) \ { \ - self.csqcmodel_##f = tmp; \ - self.SendFlags |= flag; \ + e.csqcmodel_##f = tmp; \ + e.SendFlags |= flag; \ } \ } ALLPROPERTIES @@ -114,14 +128,14 @@ void CSQCModel_CheckUpdate() #undef CSQCMODEL_IF } -void CSQCModel_LinkEntity() +void CSQCModel_LinkEntity(entity e) { - self.SendEntity = CSQCModel_Send; - self.SendFlags = 0xFFFFFF; - CSQCModel_CheckUpdate(); + e.SendEntity = CSQCModel_Send; + e.SendFlags = 0xFFFFFF; + CSQCModel_CheckUpdate(e); } -void CSQCModel_UnlinkEntity() +void CSQCModel_UnlinkEntity(entity e) { - self.SendEntity = func_null; + e.SendEntity = func_null; }