]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/csqcmodellib/sv_model.qc
Merge branch 'master' into TimePath/unified_weapons
[xonotic/xonotic-data.pk3dir.git] / qcsrc / csqcmodellib / sv_model.qc
index cbc26213cea2e54dd265ab931de3f7b635090461..ebe0b6e8765558a76de059fb6eed63f385dfebb3 100644 (file)
  * 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);
@@ -56,10 +70,10 @@ float CSQCModel_Send(entity to, float sf)
 #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;
 }