// define this if svqc code wants to use .frame2 and .lerpfrac #define CSQCMODEL_HAVE_TWO_FRAMES // don't define this ever //#define CSQCMODEL_SUPPORT_GETTAGINFO_BEFORE_DRAW // a hack for Xonotic #ifdef CSQC # define TAG_ENTITY_NAME tag_networkentity # define TAG_ENTITY_TYPE float .float tag_networkentity; #else # define TAG_ENTITY_NAME tag_entity # define TAG_ENTITY_TYPE entity #endif // 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, 254, -1, 254) \ CSQCMODEL_PROPERTY(16, float, ReadByte, WriteByte, skin) \ CSQCMODEL_PROPERTY(32, float, ReadApproxPastTime, WriteApproxPastTime, death_time) \ CSQCMODEL_IF(!isplayer) \ CSQCMODEL_PROPERTY(64, TAG_ENTITY_TYPE, ReadShort, WriteEntity, TAG_ENTITY_NAME) \ CSQCMODEL_PROPERTY_SCALED(128, float, ReadByte, WriteByte, glowmod_x, 255, 0, 255) \ CSQCMODEL_PROPERTY_SCALED(128, float, ReadByte, WriteByte, glowmod_y, 255, 0, 255) \ CSQCMODEL_PROPERTY_SCALED(128, float, ReadByte, WriteByte, glowmod_z, 255, 0, 255) \ 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(isnew, isplayer, islocalplayer); #define CSQCMODEL_HOOK_POSTUPDATE \ CSQCModel_Hook_PostUpdate(isnew, isplayer, islocalplayer); #define CSQCMODEL_HOOK_PREDRAW \ CSQCModel_Hook_PreDraw(); #define CSQCPLAYER_HOOK_POSTCAMERASETUP // force updates of player entities that often even if unchanged #define CSQCPLAYER_FORCE_UPDATES 0.25 // mod must define: //vector PL_MIN = ...; //vector PL_MAX = ...; //vector PL_VIEW_OFS = ...; //vector PL_CROUCH_MIN = ...; //vector PL_CROUCH_MAX = ...; //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 #endif #define CSQCMODEL_EF_RESPAWNGHOST EF_SELECTABLE