X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fcsqcmodel_settings.qh;h=a9ed986deef9e774a4a3c38b0eaaf50a30dfce82;hb=e6904bdec61e1ffb2d15d2d919fa50550050f82c;hp=2164ecae4e7afd6a3c81aaa10ee07439eff0ab21;hpb=8f4d064a1d62a040e788fc0634baf93e888ba2f6;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/csqcmodel_settings.qh b/qcsrc/common/csqcmodel_settings.qh index 2164ecae4..a9ed986de 100644 --- a/qcsrc/common/csqcmodel_settings.qh +++ b/qcsrc/common/csqcmodel_settings.qh @@ -1,9 +1,12 @@ // define this if svqc code wants to use .frame2 and .lerpfrac -#define CSQCMODEL_HAVE_TWO_FRAMES +//#define CSQCMODEL_HAVE_TWO_FRAMES // don't define this ever //#define CSQCMODEL_SUPPORT_GETTAGINFO_BEFORE_DRAW +// server decides crouching, this lags, but so be it +#define CSQCMODEL_SERVERSIDE_CROUCH + // a hack for Xonotic #ifdef CSQC # define TAG_ENTITY_NAME tag_networkentity @@ -14,30 +17,44 @@ # define TAG_ENTITY_TYPE entity #endif +// new fields +.vector v_angle; + // add properties you want networked to CSQC here #define CSQCMODEL_EXTRAPROPERTIES \ CSQCMODEL_PROPERTY(1, float, ReadShort, WriteShort, colormap) \ CSQCMODEL_PROPERTY(2, float, ReadInt24_t, WriteInt24_t, effects) \ CSQCMODEL_PROPERTY(4, float, ReadByte, WriteByte, modelflags) \ - CSQCMODEL_PROPERTY_SCALED(8, float, ReadByte, WriteByte, alpha, 255, 0, 255) \ + CSQCMODEL_PROPERTY_SCALED(8, float, ReadByte, WriteByte, alpha, 254, -1, 254) \ CSQCMODEL_PROPERTY(16, float, ReadByte, WriteByte, skin) \ - CSQCMODEL_IF(isplayer) \ - CSQCMODEL_ENDIF \ + CSQCMODEL_PROPERTY(32, float, ReadApproxPastTime, WriteApproxPastTime, death_time) \ + CSQCMODEL_PROPERTY(64, float, ReadByte, WriteByte, solid) \ CSQCMODEL_IF(!isplayer) \ - CSQCMODEL_PROPERTY(32, TAG_ENTITY_TYPE, ReadShort, WriteEntity, TAG_ENTITY_NAME) \ - CSQCMODEL_PROPERTY_SCALED(64, float, ReadByte, WriteByte, glowmod_x, 255, 0, 255) \ - CSQCMODEL_PROPERTY_SCALED(64, float, ReadByte, WriteByte, glowmod_y, 255, 0, 255) \ - CSQCMODEL_PROPERTY_SCALED(64, float, ReadByte, WriteByte, glowmod_z, 255, 0, 255) \ + CSQCMODEL_PROPERTY(128, TAG_ENTITY_TYPE, ReadShort, WriteEntity, TAG_ENTITY_NAME) \ + CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, glowmod_x, 255, 0, 255) \ + CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, glowmod_y, 255, 0, 255) \ + CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, glowmod_z, 255, 0, 255) \ + CSQCMODEL_ENDIF \ + CSQCMODEL_IF(isplayer) \ + CSQCMODEL_PROPERTY(128, float, ReadByte, WriteByte, anim_state) \ + CSQCMODEL_PROPERTY(128, float, ReadApproxPastTime, WriteApproxPastTime, anim_time) \ + CSQCMODEL_IF(!islocalplayer) \ + CSQCMODEL_PROPERTY(256, float, ReadChar, WriteChar, anim_lower_action) \ + CSQCMODEL_PROPERTY(256, float, ReadApproxPastTime, WriteApproxPastTime, anim_lower_time) \ + CSQCMODEL_ENDIF \ + CSQCMODEL_PROPERTY(512, float, ReadChar, WriteChar, anim_upper_action) \ + CSQCMODEL_PROPERTY(512, float, ReadApproxPastTime, WriteApproxPastTime, anim_upper_time) \ + CSQCMODEL_PROPERTY(1024, float, ReadAngle, WriteAngle, v_angle_x) \ CSQCMODEL_ENDIF // TODO get rid of colormod/glowmod here, find good solution for nex charge glowmod hack; also get rid of some useless properties on non-players that only exist for CopyBody // add hook function calls here #define CSQCMODEL_HOOK_PREUPDATE \ - CSQCModel_Hook_PreUpdate(isplayer, islocalplayer); + CSQCModel_Hook_PreUpdate(isnew, isplayer, islocalplayer); #define CSQCMODEL_HOOK_POSTUPDATE \ - CSQCModel_Hook_PostUpdate(isplayer, islocalplayer); + CSQCModel_Hook_PostUpdate(isnew, isplayer, islocalplayer); #define CSQCMODEL_HOOK_PREDRAW \ - CSQCModel_Hook_PreDraw(isplayer, islocalplayer); + CSQCModel_Hook_PreDraw(isplayer); #define CSQCPLAYER_HOOK_POSTCAMERASETUP // force updates of player entities that often even if unchanged @@ -52,34 +69,8 @@ //vector PL_CROUCH_VIEW_OFS = ...; #ifdef SVQC -# ifdef NO_LEGACY_NETWORKING -# define CSQCMODEL_AUTOINIT() CSQCModel_LinkEntity() -# define CSQCMODEL_AUTOUPDATE() CSQCModel_CheckUpdate() -# else -.float iscsqcmodel; -float autocvar_sv_use_csqc_players; -# define CSQCMODEL_AUTOINIT() \ - if(autocvar_sv_use_csqc_players) \ - { \ - CSQCModel_LinkEntity(); \ - self.iscsqcmodel = 1; \ - } \ - else \ - self.iscsqcmodel = 0 -# define CSQCMODEL_AUTOUPDATE() \ - if(autocvar_sv_use_csqc_players && !self.iscsqcmodel) \ - { \ - CSQCModel_LinkEntity(); \ - self.iscsqcmodel = 1; \ - } \ - if(!autocvar_sv_use_csqc_players && self.iscsqcmodel) \ - { \ - CSQCModel_UnlinkEntity(); \ - self.iscsqcmodel = 0; \ - } \ - if(self.iscsqcmodel) \ - CSQCModel_CheckUpdate() -# endif +# define CSQCMODEL_AUTOINIT() CSQCModel_LinkEntity() +# define CSQCMODEL_AUTOUPDATE() CSQCModel_CheckUpdate() #endif -#define CSQCMODEL_EF_INVISIBLE EF_SELECTABLE +#define CSQCMODEL_EF_RESPAWNGHOST EF_SELECTABLE