From: Rudolf Polzer Date: Fri, 2 Dec 2011 08:33:35 +0000 (+0100) Subject: restructure a bit :) X-Git-Tag: xonotic-v0.6.0~74^2~100^2~33 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=2d68def3f4f8b8255026a7aa9f6dd4c2d7443d3b;p=xonotic%2Fxonotic-data.pk3dir.git restructure a bit :) --- 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.qc deleted file mode 100644 index 520e65b1e..000000000 --- a/qcsrc/csqcmodel/common.qc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2011 Rudolf Polzer - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - */ - -noref string csqcmodel_license = "\ -Copyright (c) 2011 Rudolf Polzer\ -\ -Permission is hereby granted, free of charge, to any person obtaining a copy\ -of this software and associated documentation files (the \"Software\"), to\ -deal in the Software without restriction, including without limitation the\ -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\ -sell copies of the Software, and to permit persons to whom the Software is\ -furnished to do so, subject to the following conditions:\ -\ -The above copyright notice and this permission notice shall be included in\ -all copies or substantial portions of the Software.\ -\ -THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\ -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\ -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\ -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\ -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\ -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\ -IN THE SOFTWARE.\ -"; - -.vector glowmod; -.vector view_ofs; -.float frame; -.float frame1time; -.float frame2; -.float frame2time; -.float lerpfrac; - -#define CSQCMODEL_PROPERTY_FRAME 32768 -#define CSQCMODEL_PROPERTY_FRAME2 16384 -#define CSQCMODEL_PROPERTY_LERPFRAC 8192 -#define CSQCMODEL_PROPERTY_TELEPORTED 4096 // the "teleport bit" cancelling interpolation -#define CSQCMODEL_PROPERTY_MODELINDEX 2048 -#define CSQCMODEL_PROPERTY_ORIGIN 1024 -#define CSQCMODEL_PROPERTY_YAW 512 -#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_EXTRAPROPERTIES - -#ifdef CSQCMODEL_HAVE_TWO_FRAMES -.float frame3; -.float frame3time; -.float lerpfrac3; -.float frame4; -.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) -#else -#define ALLPROPERTIES ALLPROPERTIES_COMMON -#endif - diff --git a/qcsrc/csqcmodel/common.qh b/qcsrc/csqcmodel/common.qh new file mode 100644 index 000000000..587645cd4 --- /dev/null +++ b/qcsrc/csqcmodel/common.qh @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2011 Rudolf Polzer + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +noref string csqcmodel_license = "\ +Copyright (c) 2011 Rudolf Polzer\ +\ +Permission is hereby granted, free of charge, to any person obtaining a copy\ +of this software and associated documentation files (the \"Software\"), to\ +deal in the Software without restriction, including without limitation the\ +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\ +sell copies of the Software, and to permit persons to whom the Software is\ +furnished to do so, subject to the following conditions:\ +\ +The above copyright notice and this permission notice shall be included in\ +all copies or substantial portions of the Software.\ +\ +THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\ +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\ +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\ +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\ +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\ +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\ +IN THE SOFTWARE.\ +"; + +.vector glowmod; +.vector view_ofs; +.float frame; +.float frame1time; +.float frame2; +.float frame2time; +.float lerpfrac; + +#define CSQCMODEL_PROPERTY_FRAME 32768 +#define CSQCMODEL_PROPERTY_FRAME2 16384 +#define CSQCMODEL_PROPERTY_LERPFRAC 8192 +#define CSQCMODEL_PROPERTY_TELEPORTED 4096 // the "teleport bit" cancelling interpolation +#define CSQCMODEL_PROPERTY_MODELINDEX 2048 +#define CSQCMODEL_PROPERTY_ORIGIN 1024 +#define CSQCMODEL_PROPERTY_YAW 512 +#define CSQCMODEL_PROPERTY_PITCHROLL 256 + +#define ALLPROPERTIES_COMMON \ + 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 +.float frame3; +.float frame3time; +.float lerpfrac3; +.float frame4; +.float frame4time; +.float lerpfrac4; +#define ALLPROPERTIES ALLPROPERTIES_COMMON \ + 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