1 #ifndef CSQCMODEL_SETTINGS_H
2 #define CSQCMODEL_SETTINGS_H
6 #include "../client/sys-pre.qh"
7 #include "../dpdefs/csprogsdefs.qh"
8 #include "../client/sys-post.qh"
9 #include "../client/defs.qh"
10 #include "../dpdefs/keycodes.qh"
11 #include "constants.qh"
13 #include "../warpzonelib/anglestransform.qh"
14 #include "../warpzonelib/mathlib.qh"
15 #include "../warpzonelib/common.qh"
16 #include "../warpzonelib/client.qh"
17 #include "playerstats.qh"
23 #include "counting.qh"
24 #include "weapons/weapons.qh"
26 #include "command/markup.qh"
27 #include "command/rpn.qh"
28 #include "command/generic.qh"
29 #include "command/shared_defs.qh"
31 #include "animdecide.qh"
32 #include "../client/command/cl_cmd.qh"
33 #include "monsters/monsters.qh"
34 #include "../client/autocvars.qh"
35 #include "notifications.qh"
36 #include "deathtypes.qh"
37 #include "../client/damage.qh"
38 #include "../csqcmodellib/interpolate.qh"
39 #include "../client/teamradar.qh"
40 #include "../client/hud.qh"
41 #include "../client/scoreboard.qh"
42 #include "../client/waypointsprites.qh"
43 #include "../client/movetypes.qh"
44 #include "../client/prandom.qh"
45 #include "../client/bgmscript.qh"
46 #include "../client/noise.qh"
47 #include "../client/tturrets.qh"
48 #include "../server/tturrets/include/turrets_early.qh"
49 #include "../client/main.qh"
50 #include "../client/vehicles/vehicles.qh"
53 #include "util-pre.qh"
54 #include "../server/sys-pre.qh"
55 #include "../dpdefs/progsdefs.qh"
56 #include "../dpdefs/dpextensions.qh"
57 #include "../server/sys-post.qh"
58 #include "../warpzonelib/anglestransform.qh"
59 #include "../warpzonelib/mathlib.qh"
60 #include "../warpzonelib/common.qh"
61 #include "../warpzonelib/util_server.qh"
62 #include "../warpzonelib/server.qh"
63 #include "constants.qh"
70 #include "counting.qh"
72 #include "command/markup.qh"
73 #include "command/rpn.qh"
74 #include "command/generic.qh"
75 #include "command/shared_defs.qh"
76 #include "net_notice.qh"
77 #include "animdecide.qh"
78 #include "monsters/monsters.qh"
79 #include "monsters/sv_monsters.qh"
80 #include "monsters/spawn.qh"
81 #include "weapons/config.qh"
82 #include "weapons/weapons.qh"
83 #include "../server/weapons/accuracy.qh"
84 #include "../server/weapons/common.qh"
85 #include "../server/weapons/csqcprojectile.qh"
86 #include "../server/weapons/hitplot.qh"
87 #include "../server/weapons/selection.qh"
88 #include "../server/weapons/spawning.qh"
89 #include "../server/weapons/throwing.qh"
90 #include "../server/weapons/tracing.qh"
91 #include "../server/weapons/weaponstats.qh"
92 #include "../server/weapons/weaponsystem.qh"
93 #include "../server/t_items.qh"
94 #include "../server/autocvars.qh"
95 #include "../server/constants.qh"
96 #include "../server/defs.qh"
97 #include "notifications.qh"
98 #include "deathtypes.qh"
99 #include "../server/mutators/mutators_include.qh"
100 #include "../server/tturrets/include/turrets_early.qh"
101 #include "../server/vehicles/vehicles_def.qh"
102 #include "../server/campaign.qh"
103 #include "campaign_common.qh"
104 #include "mapinfo.qh"
105 #include "../server/command/common.qh"
106 #include "../server/command/banning.qh"
107 #include "../server/command/radarmap.qh"
108 #include "../server/command/vote.qh"
109 #include "../server/command/getreplies.qh"
110 #include "../server/command/cmd.qh"
111 #include "../server/command/sv_cmd.qh"
114 // define this if svqc code wants to use .frame2 and .lerpfrac
115 //#define CSQCMODEL_HAVE_TWO_FRAMES
117 // don't define this ever
118 //#define CSQCMODEL_SUPPORT_GETTAGINFO_BEFORE_DRAW
120 // server decides crouching, this lags, but so be it
121 #define CSQCMODEL_SERVERSIDE_CROUCH
123 // a hack for Xonotic
125 # define TAG_ENTITY_NAME tag_networkentity
126 # define TAG_ENTITY_TYPE float
127 .float tag_networkentity;
129 # define TAG_ENTITY_NAME tag_entity
130 # define TAG_ENTITY_TYPE entity
136 // add properties you want networked to CSQC here
137 #define CSQCMODEL_EXTRAPROPERTIES \
138 CSQCMODEL_PROPERTY(1, int, ReadShort, WriteShort, colormap) \
139 CSQCMODEL_PROPERTY(2, int, ReadInt24_t, WriteInt24_t, effects) \
140 CSQCMODEL_PROPERTY(4, int, ReadByte, WriteByte, modelflags) \
141 CSQCMODEL_PROPERTY_SCALED(8, float, ReadByte, WriteByte, alpha, 254, -1, 254) \
142 CSQCMODEL_PROPERTY(16, float, ReadByte, WriteByte, skin) \
143 CSQCMODEL_PROPERTY(32, float, ReadApproxPastTime, WriteApproxPastTime, death_time) \
144 CSQCMODEL_PROPERTY(64, float, ReadByte, WriteByte, solid) \
145 CSQCMODEL_IF(!isplayer) \
146 CSQCMODEL_PROPERTY(128, TAG_ENTITY_TYPE, ReadShort, WriteEntity, TAG_ENTITY_NAME) \
147 CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, glowmod_x, 255, 0, 255) \
148 CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, glowmod_y, 255, 0, 255) \
149 CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, glowmod_z, 255, 0, 255) \
150 CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, colormod_x, 255, 0, 255) \
151 CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, colormod_y, 255, 0, 255) \
152 CSQCMODEL_PROPERTY_SCALED(256, float, ReadByte, WriteByte, colormod_z, 255, 0, 255) \
154 CSQCMODEL_IF(isplayer) \
155 CSQCMODEL_PROPERTY(128, float, ReadByte, WriteByte, anim_state) \
156 CSQCMODEL_PROPERTY(128, float, ReadApproxPastTime, WriteApproxPastTime, anim_time) \
157 CSQCMODEL_IF(!islocalplayer) \
158 CSQCMODEL_PROPERTY(256, float, ReadChar, WriteChar, anim_lower_action) \
159 CSQCMODEL_PROPERTY(256, float, ReadApproxPastTime, WriteApproxPastTime, anim_lower_time) \
161 CSQCMODEL_PROPERTY(512, float, ReadChar, WriteChar, anim_upper_action) \
162 CSQCMODEL_PROPERTY(512, float, ReadApproxPastTime, WriteApproxPastTime, anim_upper_time) \
164 CSQCMODEL_PROPERTY(1024, float, ReadAngle, WriteAngle, v_angle_x) \
165 CSQCMODEL_PROPERTY_SCALED(4096, float, ReadByte, WriteByte, scale, 16, 0, 255)
166 // TODO get rid of colormod/glowmod here, find good solution for vortex charge glowmod hack; also get rid of some useless properties on non-players that only exist for CopyBody
168 // add hook function calls here
169 #define CSQCMODEL_HOOK_PREUPDATE \
170 CSQCModel_Hook_PreUpdate(isnew, isplayer, islocalplayer);
171 #define CSQCMODEL_HOOK_POSTUPDATE \
172 CSQCModel_Hook_PostUpdate(isnew, isplayer, islocalplayer);
173 #define CSQCMODEL_HOOK_PREDRAW \
174 CSQCModel_Hook_PreDraw(isplayer);
175 #define CSQCPLAYER_HOOK_POSTCAMERASETUP
177 // force updates of player entities that often even if unchanged
178 const float CSQCPLAYER_FORCE_UPDATES = 0.25;
181 //vector PL_MIN = ...;
182 //vector PL_MAX = ...;
183 //vector PL_VIEW_OFS = ...;
184 //vector PL_CROUCH_MIN = ...;
185 //vector PL_CROUCH_MAX = ...;
186 //vector PL_CROUCH_VIEW_OFS = ...;
189 # define CSQCMODEL_AUTOINIT() CSQCModel_LinkEntity()
190 # define CSQCMODEL_AUTOUPDATE() CSQCModel_CheckUpdate()
193 #define CSQCMODEL_EF_RESPAWNGHOST EF_SELECTABLE