From: Rudolf Polzer Date: Mon, 14 Nov 2011 05:51:43 +0000 (+0100) Subject: support custom properties X-Git-Tag: xonotic-v0.6.0~74^2~100^2~83 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=2c8c9166626800326eeb9b83f0857205d8fe373a;p=xonotic%2Fxonotic-data.pk3dir.git support custom properties --- diff --git a/qcsrc/csqcmodel/cl_model.qc b/qcsrc/csqcmodel/cl_model.qc index 540f97b7b..f5519c2f6 100644 --- a/qcsrc/csqcmodel/cl_model.qc +++ b/qcsrc/csqcmodel/cl_model.qc @@ -146,6 +146,8 @@ void CSQCModel_Draw() InterpolateOrigin_Do(); // TODO csqcplayers: run prediction here too CSQCModel_InterpolateAnimation_Do(); + + { CSQCMODELS_HOOK_PREDRAW } } void CSQCModel_Read() @@ -155,6 +157,8 @@ void CSQCModel_Read() self.iflags |= IFLAG_ANGLES; // interpolate angles too + { CSQCMODELS_HOOK_PREUPDATE } + CSQCPlayer_PreUpdate(); InterpolateOrigin_Undo(); CSQCModel_InterpolateAnimation_PreNote(sf); @@ -173,6 +177,8 @@ void CSQCModel_Read() InterpolateOrigin_Note(); CSQCPlayer_PostUpdate(); + { CSQCMODELS_HOOK_POSTUPDATE } + #ifdef CSQCMODELS_SUPPORT_GETTAGINFO_BEFORE_DRAW InterpolateOrigin_Do(); CSQCModel_InterpolateAnimation_Do(); diff --git a/qcsrc/csqcmodel/common.qc b/qcsrc/csqcmodel/common.qc index 5677f9a4c..74dbc78ad 100644 --- a/qcsrc/csqcmodel/common.qc +++ b/qcsrc/csqcmodel/common.qc @@ -19,14 +19,8 @@ PROPERTY(2, ReadAngle, WriteAngle, angles_y) \ PROPERTY(2, ReadAngle, WriteAngle, angles_z) \ PROPERTY(4, ReadShort, WriteShort, modelindex) \ - PROPERTY(16, ReadByte, WriteByte, skin) \ - PROPERTY(32, ReadInt24_t, WriteInt24_t, effects) \ - PROPERTY_SCALED(64, ReadByte, WriteByte, alpha, 255, 0, 255) \ - PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_x, 32, 0, 255) \ - PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_y, 32, 0, 255) \ - PROPERTY_SCALED(128, ReadByte, WriteByte, glowmod_z, 32, 0, 255) \ - PROPERTY(256, ReadChar, WriteChar, view_ofs_z) \ - PROPERTY(512, ReadShort, WriteShort, colormap) + PROPERTY(8, ReadChar, WriteChar, view_ofs_z) \ + CSQCMODELS_EXTRAPROPERTIES(16) #ifdef CSQCMODELS_HAVE_TWO_FRAMES .float frame3; diff --git a/qcsrc/csqcmodel/settings.qh b/qcsrc/csqcmodel/settings.qh index 67acc7f66..51c3a771e 100644 --- a/qcsrc/csqcmodel/settings.qh +++ b/qcsrc/csqcmodel/settings.qh @@ -1,2 +1,20 @@ +// define this if svqc code wants to use .frame2 and .lerpfrac #define CSQCMODELS_HAVE_TWO_FRAMES + +// don't define this ever //#define CSQCMODELS_SUPPORT_GETTAGINFO_BEFORE_DRAW + +// add properties you want networked to CSQC here +#define CSQCMODELS_EXTRAPROPERTIES(multiplier) \ + PROPERTY(multiplier*1, ReadByte, WriteByte, skin) \ + PROPERTY(multiplier*2, ReadShort, WriteShort, colormap) \ + PROPERTY(multiplier*4, ReadInt24_t, WriteInt24_t, effects) \ + PROPERTY_SCALED(multiplier*8, ReadByte, WriteByte, alpha, 255, 0, 255) \ + PROPERTY_SCALED(multiplier*16, ReadByte, WriteByte, glowmod_x, 32, 0, 255) \ + PROPERTY_SCALED(multiplier*16, ReadByte, WriteByte, glowmod_y, 32, 0, 255) \ + PROPERTY_SCALED(multiplier*16, ReadByte, WriteByte, glowmod_z, 32, 0, 255) + +// add hook function calls here +#define CSQCMODELS_HOOK_PREUPDATE +#define CSQCMODELS_HOOK_POSTUPDATE +#define CSQCMODELS_HOOK_PREDRAW