From 2d68def3f4f8b8255026a7aa9f6dd4c2d7443d3b Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 2 Dec 2011 09:33:35 +0100 Subject: [PATCH] restructure a bit :) --- qcsrc/client/progs.src | 2 +- qcsrc/csqcmodel/cl_model.qc | 4 +-- qcsrc/csqcmodel/cl_model.qh | 11 +++++++ qcsrc/csqcmodel/{common.qc => common.qh} | 21 ++++++------ qcsrc/csqcmodel/settings.qh | 10 +++--- qcsrc/csqcmodel/sv_model.qc | 41 +++++++++--------------- qcsrc/csqcmodel/sv_model.qh | 12 +++++++ qcsrc/server/progs.src | 2 +- 8 files changed, 58 insertions(+), 45 deletions(-) rename qcsrc/csqcmodel/{common.qc => common.qh} (76%) diff --git a/qcsrc/client/progs.src b/qcsrc/client/progs.src index 56c902df7..9abb3a81f 100644 --- a/qcsrc/client/progs.src +++ b/qcsrc/client/progs.src @@ -38,6 +38,7 @@ tturrets.qh main.qh vehicles/vehicles.qh ../csqcmodel/settings.qh +../csqcmodel/common.qh ../csqcmodel/cl_model.qh ../csqcmodel/cl_player.qh @@ -62,7 +63,6 @@ projectile.qc gibs.qc damage.qc casings.qc -../csqcmodel/common.qc ../csqcmodel/cl_model.qc ../csqcmodel/cl_player.qc effects.qc diff --git a/qcsrc/csqcmodel/cl_model.qc b/qcsrc/csqcmodel/cl_model.qc index 77f5e2cb0..f1607c08d 100644 --- a/qcsrc/csqcmodel/cl_model.qc +++ b/qcsrc/csqcmodel/cl_model.qc @@ -173,10 +173,10 @@ void CSQCModel_Read() #define CSQCMODEL_IF(cond) if(cond) { #define CSQCMODEL_ENDIF } -#define CSQCMODEL_PROPERTY(flag,r,w,f) \ +#define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ if(sf & flag) \ self.f = r(); -#define CSQCMODEL_PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \ +#define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) \ if(sf & flag) \ self.f = r() / s; ALLPROPERTIES diff --git a/qcsrc/csqcmodel/cl_model.qh b/qcsrc/csqcmodel/cl_model.qh index afd5f7d1b..fba21518f 100644 --- a/qcsrc/csqcmodel/cl_model.qh +++ b/qcsrc/csqcmodel/cl_model.qh @@ -21,3 +21,14 @@ */ void CSQCModel_Read(); + +#define CSQCMODEL_IF(cond) +#define CSQCMODEL_ENDIF +#define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ + .t f; +#define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) CSQCMODEL_PROPERTY(flag,t,r,w,f) + ALLPROPERTIES +#undef CSQCMODEL_PROPERTY_SCALED +#undef CSQCMODEL_PROPERTY +#undef CSQCMODEL_ENDIF +#undef CSQCMODEL_IF diff --git a/qcsrc/csqcmodel/common.qc b/qcsrc/csqcmodel/common.qh similarity index 76% rename from qcsrc/csqcmodel/common.qc rename to qcsrc/csqcmodel/common.qh index 520e65b1e..587645cd4 100644 --- a/qcsrc/csqcmodel/common.qc +++ b/qcsrc/csqcmodel/common.qh @@ -60,14 +60,14 @@ IN THE SOFTWARE.\ #define CSQCMODEL_PROPERTY_PITCHROLL 256 #define ALLPROPERTIES_COMMON \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_FRAME, ReadByte, WriteByte, frame) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_MODELINDEX, ReadShort, WriteShort, modelindex) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_ORIGIN, ReadCoord, WriteCoord, origin_x) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_ORIGIN, ReadCoord, WriteCoord, origin_y) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_ORIGIN, ReadCoord, WriteCoord, origin_z) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_PITCHROLL, ReadAngle, WriteAngle, angles_x) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_YAW, ReadAngle, WriteAngle, angles_y) \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_PITCHROLL, ReadAngle, WriteAngle, angles_z) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_FRAME, float, ReadByte, WriteByte, frame) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_MODELINDEX, float, ReadShort, WriteShort, modelindex) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_ORIGIN, float, ReadCoord, WriteCoord, origin_x) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_ORIGIN, float, ReadCoord, WriteCoord, origin_y) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_ORIGIN, float, ReadCoord, WriteCoord, origin_z) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_PITCHROLL, float, ReadAngle, WriteAngle, angles_x) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_YAW, float, ReadAngle, WriteAngle, angles_y) \ + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_PITCHROLL, float, ReadAngle, WriteAngle, angles_z) \ CSQCMODEL_EXTRAPROPERTIES #ifdef CSQCMODEL_HAVE_TWO_FRAMES @@ -78,9 +78,8 @@ IN THE SOFTWARE.\ .float frame4time; .float lerpfrac4; #define ALLPROPERTIES ALLPROPERTIES_COMMON \ - CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_FRAME2, ReadByte, WriteByte, frame2) \ - CSQCMODEL_PROPERTY_SCALED(CSQCMODEL_PROPERTY_LERPFRAC, ReadByte, WriteByte, lerpfrac, 255, 0, 255) + CSQCMODEL_PROPERTY(CSQCMODEL_PROPERTY_FRAME2, float, ReadByte, WriteByte, frame2) \ + CSQCMODEL_PROPERTY_SCALED(CSQCMODEL_PROPERTY_LERPFRAC, float, ReadByte, WriteByte, lerpfrac, 255, 0, 255) #else #define ALLPROPERTIES ALLPROPERTIES_COMMON #endif - diff --git a/qcsrc/csqcmodel/settings.qh b/qcsrc/csqcmodel/settings.qh index 89e1b1de7..4ec6ffb38 100644 --- a/qcsrc/csqcmodel/settings.qh +++ b/qcsrc/csqcmodel/settings.qh @@ -7,13 +7,13 @@ // add properties you want networked to CSQC here #define CSQCMODEL_EXTRAPROPERTIES \ CSQCMODEL_IF(isplayer) \ - CSQCMODEL_PROPERTY(1, ReadByte, WriteByte, skin) \ - CSQCMODEL_PROPERTY(2, ReadShort, WriteShort, colormap) \ - CSQCMODEL_PROPERTY(4, ReadInt24_t, WriteInt24_t, effects) \ - CSQCMODEL_PROPERTY_SCALED(8, ReadByte, WriteByte, alpha, 255, 0, 255) \ + CSQCMODEL_PROPERTY(1, float, ReadByte, WriteByte, skin) \ + CSQCMODEL_PROPERTY(2, float, ReadShort, WriteShort, colormap) \ + CSQCMODEL_PROPERTY(4, float, ReadInt24_t, WriteInt24_t, effects) \ + CSQCMODEL_PROPERTY_SCALED(8, float, ReadByte, WriteByte, alpha, 255, 0, 255) \ CSQCMODEL_ENDIF \ CSQCMODEL_IF(!isplayer) \ - CSQCMODEL_PROPERTY(1, ReadCSQCEntity, WriteEntity, tag_entity) \ + CSQCMODEL_PROPERTY(1, entity, ReadCSQCEntity, WriteEntity, tag_entity) \ CSQCMODEL_ENDIF // declare "odd" fields here diff --git a/qcsrc/csqcmodel/sv_model.qc b/qcsrc/csqcmodel/sv_model.qc index bc9ddddef..164c54773 100644 --- a/qcsrc/csqcmodel/sv_model.qc +++ b/qcsrc/csqcmodel/sv_model.qc @@ -22,17 +22,6 @@ // generic CSQC model code -#define CSQCMODEL_IF(cond) -#define CSQCMODEL_ENDIF -#define CSQCMODEL_PROPERTY(flag,r,w,f) \ - .float csqcmodel_##f; -#define CSQCMODEL_PROPERTY_SCALED(flag,r,w,f,s,mi,ma) CSQCMODEL_PROPERTY(flag,r,w,f) - ALLPROPERTIES -#undef CSQCMODEL_PROPERTY_SCALED -#undef CSQCMODEL_PROPERTY -#undef CSQCMODEL_ENDIF -#undef CSQCMODEL_IF - float CSQCModel_Send(entity to, float sf) { // some nice flags for CSQCMODEL_IF @@ -45,12 +34,12 @@ float CSQCModel_Send(entity to, float sf) #define CSQCMODEL_IF(cond) if(cond) { #define CSQCMODEL_ENDIF } -#define CSQCMODEL_PROPERTY(flag,r,w,f) \ +#define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ if(sf & flag) \ { \ w(MSG_ENTITY, self.csqcmodel_##f); \ } -#define CSQCMODEL_PROPERTY_SCALED(flag,r,w,f,s,mi,ma) CSQCMODEL_PROPERTY(flag,r,w,f) +#define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) CSQCMODEL_PROPERTY(flag,t,r,w,f) ALLPROPERTIES #undef CSQCMODEL_PROPERTY_SCALED #undef CSQCMODEL_PROPERTY @@ -67,8 +56,6 @@ 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 - float tmp; - if(self.effects & EF_RESTARTANIM_BIT) { self.SendFlags |= CSQCMODEL_PROPERTY_FRAME | CSQCMODEL_PROPERTY_FRAME2; // full anim resend please @@ -83,19 +70,23 @@ void CSQCModel_CheckUpdate() #define CSQCMODEL_IF(cond) if(cond) { #define CSQCMODEL_ENDIF } -#define CSQCMODEL_PROPERTY(flag,r,w,f) \ - tmp = self.f; \ - if(tmp != self.csqcmodel_##f) \ +#define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ { \ - self.csqcmodel_##f = tmp; \ - self.SendFlags |= flag; \ + t tmp = self.f; \ + if(tmp != self.csqcmodel_##f) \ + { \ + self.csqcmodel_##f = tmp; \ + self.SendFlags |= flag; \ + } \ } -#define CSQCMODEL_PROPERTY_SCALED(flag,r,w,f,s,mi,ma) \ - tmp = bound(mi, s * self.f, ma); \ - if(tmp != self.csqcmodel_##f) \ +#define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) \ { \ - self.csqcmodel_##f = tmp; \ - self.SendFlags |= flag; \ + t tmp = bound(mi, s * self.f, ma); \ + if(tmp != self.csqcmodel_##f) \ + { \ + self.csqcmodel_##f = tmp; \ + self.SendFlags |= flag; \ + } \ } ALLPROPERTIES #undef CSQCMODEL_PROPERTY_SCALED diff --git a/qcsrc/csqcmodel/sv_model.qh b/qcsrc/csqcmodel/sv_model.qh index 40d1dc6c7..3c4ce2b78 100644 --- a/qcsrc/csqcmodel/sv_model.qh +++ b/qcsrc/csqcmodel/sv_model.qh @@ -25,3 +25,15 @@ void CSQCModel_CheckUpdate(); void CSQCModel_LinkEntity(); void CSQCModel_UnlinkEntity(); + +#define CSQCMODEL_IF(cond) +#define CSQCMODEL_ENDIF +#define CSQCMODEL_PROPERTY(flag,t,r,w,f) \ + .t f; \ + .t csqcmodel_##f; +#define CSQCMODEL_PROPERTY_SCALED(flag,t,r,w,f,s,mi,ma) CSQCMODEL_PROPERTY(flag,t,r,w,f) + ALLPROPERTIES +#undef CSQCMODEL_PROPERTY_SCALED +#undef CSQCMODEL_PROPERTY +#undef CSQCMODEL_ENDIF +#undef CSQCMODEL_IF diff --git a/qcsrc/server/progs.src b/qcsrc/server/progs.src index 86e22ccde..834950e7a 100644 --- a/qcsrc/server/progs.src +++ b/qcsrc/server/progs.src @@ -39,6 +39,7 @@ campaign.qh accuracy.qh csqcprojectile.qh ../csqcmodel/settings.qh +../csqcmodel/common.qh ../csqcmodel/sv_model.qh csqceffects.qc @@ -178,7 +179,6 @@ target_music.qc accuracy.qc -../csqcmodel/common.qc ../csqcmodel/sv_model.qc csqcprojectile.qc -- 2.39.2