]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/physics.qh
Extract physics macro definitions
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / physics.qh
1 // Client/server mappings
2
3 #undef PHYS_INPUT_ANGLES
4 #undef PHYS_INPUT_BUTTONS
5 #undef PHYS_INPUT_TIMELENGTH
6 #undef PHYS_INPUT_MOVEVALUES
7
8 #undef PHYS_WORLD_ANGLES
9
10 #undef PHYS_DEAD
11
12 #undef PHYS_BUTTON_HOOK
13
14 #undef GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE
15 #undef GAMEPLAYFIX_NOGRAVITYONGROUND
16 #undef GAMEPLAYFIX_Q2AIRACCELERATE
17
18 #undef IS_DUCKED
19 #undef SET_DUCKED
20 #undef UNSET_DUCKED
21
22 #undef IS_JUMP_HELD
23 #undef SET_JUMP_HELD
24 #undef UNSET_JUMP_HELD
25
26 #undef IS_ONGROUND
27 #undef SET_ONGROUND
28 #undef UNSET_ONGROUND
29
30 #undef ITEMS
31
32 #undef PHYS_AMMO_FUEL
33
34 #undef PHYS_FROZEN
35
36 #undef PHYS_ACCELERATE
37 #undef PHYS_AIRACCEL_QW
38 #undef PHYS_AIRACCEL_QW_STRETCHFACTOR
39 #undef PHYS_AIRACCEL_SIDEWAYS_FRICTION
40 #undef PHYS_AIRACCELERATE
41 #undef PHYS_AIRCONTROL
42 #undef PHYS_AIRCONTROL_PENALTY
43 #undef PHYS_AIRCONTROL_POWER
44 #undef PHYS_AIRSPEEDLIMIT_NONQW
45 #undef PHYS_AIRSTOPACCELERATE
46 #undef PHYS_AIRSTRAFEACCEL_QW
47 #undef PHYS_AIRSTRAFEACCELERATE
48 #undef PHYS_ENTGRAVITY
49 #undef PHYS_FRICTION
50 #undef PHYS_GRAVITY
51 #undef PHYS_HIGHSPEED
52 #undef PHYS_JUMPVELOCITY
53 #undef PHYS_MAXAIRSPEED
54 #undef PHYS_MAXAIRSTRAFESPEED
55 #undef PHYS_MAXSPEED
56 #undef PHYS_STEPHEIGHT
57 #undef PHYS_STOPSPEED
58 #undef PHYS_WARSOWBUNNY_ACCEL
59 #undef PHYS_WARSOWBUNNY_BACKTOSIDERATIO
60 #undef PHYS_WARSOWBUNNY_AIRFORWARDACCEL
61 #undef PHYS_WARSOWBUNNY_TOPSPEED
62 #undef PHYS_WARSOWBUNNY_TURNACCEL
63
64 #undef PHYS_JETPACK_ACCEL_UP
65 #undef PHYS_JETPACK_ACCEL_SIDE
66 #undef PHYS_JETPACK_ANTIGRAVITY
67 #undef PHYS_JETPACK_FUEL
68 #undef PHYS_JETPACK_MAXSPEED_UP
69 #undef PHYS_JETPACK_MAXSPEED_SIDE
70
71 #undef PHYS_DODGING_FRAMETIME
72 #undef PHYS_DODGING
73 #undef PHYS_DODGING_DELAY
74 #undef PHYS_DODGING_TIMEOUT
75 #undef PHYS_DODGING_HORIZ_SPEED_FROZEN
76 #undef PHYS_DODGING_FROZEN
77 #undef PHYS_DODGING_FROZEN_NODOUBLETAP
78 #undef PHYS_DODGING_HORIZ_SPEED
79 #undef PHYS_DODGING_PRESSED_KEYS
80 #undef PHYS_DODGING_HEIGHT_THRESHOLD
81 #undef PHYS_DODGING_DISTANCE_THRESHOLD
82 #undef PHYS_DODGING_RAMP_TIME
83 #undef PHYS_DODGING_UP_SPEED
84 #undef PHYS_DODGING_WALL
85
86
87 #ifdef CSQC
88
89         #define PHYS_INPUT_ANGLES(s)                            input_angles
90         #define PHYS_INPUT_BUTTONS(s)                           input_buttons
91         #define PHYS_INPUT_TIMELENGTH                           input_timelength
92         #define PHYS_INPUT_MOVEVALUES(s)                        input_movevalues
93 // TODO
94         #define PHYS_WORLD_ANGLES(s)                            input_angles
95
96         #define PHYS_DEAD(s)                                            s.csqcmodel_isdead
97
98         #define PHYS_BUTTON_HOOK(s)                                     (input_buttons & 32)
99
100         #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE  moveflags & MOVEFLAG_GRAVITYUNAFFECTEDBYTICRATE
101         #define GAMEPLAYFIX_NOGRAVITYONGROUND                   cvar("sv_gameplayfix_nogravityonground")
102         #define GAMEPLAYFIX_Q2AIRACCELERATE                             cvar("sv_gameplayfix_q2airaccelerate")
103
104         #define IS_DUCKED(s)                                            (s.pmove_flags & PMF_DUCKED)
105         #define SET_DUCKED(s)                                           s.pmove_flags |= PMF_DUCKED
106         #define UNSET_DUCKED(s)                                         s.pmove_flags &= ~PMF_DUCKED
107
108         #define IS_JUMP_HELD(s)                                         (s.pmove_flags & PMF_JUMP_HELD)
109         #define SET_JUMP_HELD(s)                                        s.pmove_flags |= PMF_JUMP_HELD
110         #define UNSET_JUMP_HELD(s)                                      s.pmove_flags &= ~PMF_JUMP_HELD
111
112         #define IS_ONGROUND(s)                                          (s.pmove_flags & PMF_ONGROUND)
113         #define SET_ONGROUND(s)                                         s.pmove_flags |= PMF_ONGROUND
114         #define UNSET_ONGROUND(s)                                       s.pmove_flags &= ~PMF_ONGROUND
115
116         #define ITEMS(s)                                                        getstati(STAT_ITEMS, 0, 24)
117
118         #define PHYS_AMMO_FUEL(s)                                       getstati(STAT_FUEL)
119
120         #define PHYS_FROZEN(s)                                          getstati(STAT_FROZEN)
121
122         #define PHYS_ACCELERATE                                         getstatf(STAT_MOVEVARS_ACCELERATE)
123         #define PHYS_AIRACCEL_QW(s)                                     getstatf(STAT_MOVEVARS_AIRACCEL_QW)
124         #define PHYS_AIRACCEL_QW_STRETCHFACTOR(s)       getstatf(STAT_MOVEVARS_AIRACCEL_QW_STRETCHFACTOR)
125         #define PHYS_AIRACCEL_SIDEWAYS_FRICTION         getstatf(STAT_MOVEVARS_AIRACCEL_SIDEWAYS_FRICTION)
126         #define PHYS_AIRACCELERATE                                      getstatf(STAT_MOVEVARS_AIRACCELERATE)
127         #define PHYS_AIRCONTROL                                         getstatf(STAT_MOVEVARS_AIRCONTROL)
128         #define PHYS_AIRCONTROL_PENALTY                         getstatf(STAT_MOVEVARS_AIRCONTROL_PENALTY)
129         #define PHYS_AIRCONTROL_POWER                           getstatf(STAT_MOVEVARS_AIRCONTROL_POWER)
130         #define PHYS_AIRSPEEDLIMIT_NONQW(s)                     getstatf(STAT_MOVEVARS_AIRSPEEDLIMIT_NONQW)
131         #define PHYS_AIRSTOPACCELERATE                          getstatf(STAT_MOVEVARS_AIRSTOPACCELERATE)
132         #define PHYS_AIRSTRAFEACCEL_QW(s)                       getstatf(STAT_MOVEVARS_AIRSTRAFEACCEL_QW)
133         #define PHYS_AIRSTRAFEACCELERATE                        getstatf(STAT_MOVEVARS_AIRSTRAFEACCELERATE)
134         #define PHYS_ENTGRAVITY(s)                                      getstatf(STAT_MOVEVARS_ENTGRAVITY)
135         #define PHYS_FRICTION                                           getstatf(STAT_MOVEVARS_FRICTION)
136         #define PHYS_GRAVITY                                            getstatf(STAT_MOVEVARS_GRAVITY)
137         #define PHYS_HIGHSPEED                                          getstatf(STAT_MOVEVARS_HIGHSPEED)
138         #define PHYS_JUMPVELOCITY                                       getstatf(STAT_MOVEVARS_JUMPVELOCITY)
139         #define PHYS_MAXAIRSPEED                                        getstatf(STAT_MOVEVARS_MAXAIRSPEED)
140         #define PHYS_MAXAIRSTRAFESPEED                          getstatf(STAT_MOVEVARS_MAXAIRSTRAFESPEED)
141         #define PHYS_MAXSPEED(s)                                        getstatf(STAT_MOVEVARS_MAXSPEED)
142         #define PHYS_STEPHEIGHT                                         getstatf(STAT_MOVEVARS_STEPHEIGHT)
143         #define PHYS_STOPSPEED                                          getstatf(STAT_MOVEVARS_STOPSPEED)
144         #define PHYS_WARSOWBUNNY_ACCEL                          getstatf(STAT_MOVEVARS_WARSOWBUNNY_ACCEL)
145         #define PHYS_WARSOWBUNNY_BACKTOSIDERATIO        getstatf(STAT_MOVEVARS_WARSOWBUNNY_BACKTOSIDERATIO)
146         #define PHYS_WARSOWBUNNY_AIRFORWARDACCEL        getstatf(STAT_MOVEVARS_WARSOWBUNNY_AIRFORWARDACCEL)
147         #define PHYS_WARSOWBUNNY_TOPSPEED                       getstatf(STAT_MOVEVARS_WARSOWBUNNY_TOPSPEED)
148         #define PHYS_WARSOWBUNNY_TURNACCEL                      getstatf(STAT_MOVEVARS_WARSOWBUNNY_TURNACCEL)
149
150         #define PHYS_JETPACK_ACCEL_UP                           getstatf(STAT_JETPACK_ACCEL_UP)
151         #define PHYS_JETPACK_ACCEL_SIDE                         getstatf(STAT_JETPACK_ACCEL_SIDE)
152         #define PHYS_JETPACK_ANTIGRAVITY                        getstatf(STAT_JETPACK_ANTIGRAVITY)
153         #define PHYS_JETPACK_FUEL                                       getstatf(STAT_JETPACK_FUEL)
154         #define PHYS_JETPACK_MAXSPEED_UP                        getstatf(STAT_JETPACK_MAXSPEED_UP)
155         #define PHYS_JETPACK_MAXSPEED_SIDE                      getstatf(STAT_JETPACK_MAXSPEED_SIDE)
156
157         #define PHYS_DODGING_FRAMETIME                          (1 / frametime <= 0 ? 60 : frametime)
158         #define PHYS_DODGING                                            getstati(STAT_DODGING)
159         #define PHYS_DODGING_DELAY                                      getstatf(STAT_DODGING_DELAY)
160         #define PHYS_DODGING_TIMEOUT(s)                         getstatf(STAT_DODGING_TIMEOUT)
161         #define PHYS_DODGING_HORIZ_SPEED_FROZEN         getstatf(STAT_DODGING_HORIZ_SPEED_FROZEN)
162         #define PHYS_DODGING_FROZEN                                     getstati(STAT_DODGING_FROZEN)
163         #define PHYS_DODGING_FROZEN_NODOUBLETAP         getstati(STAT_DODGING_FROZEN_NO_DOUBLETAP)
164         #define PHYS_DODGING_HORIZ_SPEED                        getstatf(STAT_DODGING_HORIZ_SPEED)
165         #define PHYS_DODGING_PRESSED_KEYS(s)            s.pressedkeys
166         #define PHYS_DODGING_HEIGHT_THRESHOLD           getstatf(STAT_DODGING_HEIGHT_THRESHOLD)
167         #define PHYS_DODGING_DISTANCE_THRESHOLD         getstatf(STAT_DODGING_DISTANCE_THRESHOLD)
168         #define PHYS_DODGING_RAMP_TIME                          getstatf(STAT_DODGING_RAMP_TIME)
169         #define PHYS_DODGING_UP_SPEED                           getstatf(STAT_DODGING_UP_SPEED)
170         #define PHYS_DODGING_WALL                                       getstatf(STAT_DODGING_WALL)
171
172 #elif defined(SVQC)
173
174         #define PHYS_INPUT_ANGLES(s)                            s.v_angle
175         // TODO: cache
176         #define PHYS_INPUT_BUTTONS(s)                           (s.BUTTON_ATCK + 2 * s.BUTTON_JUMP + 4 * s.BUTTON_ATCK2 + 8 * s.BUTTON_ZOOM + 16 * s.BUTTON_CROUCH + 32 * s.BUTTON_HOOK + 64 * s.BUTTON_USE + 128 * (s.movement_x < 0) + 256 * (s.movement_x > 0) + 512 * (s.movement_y < 0) + 1024 * (s.movement_y > 0))
177         #define PHYS_INPUT_TIMELENGTH                           frametime
178         #define PHYS_INPUT_MOVEVALUES(s)                        s.movement
179
180         #define PHYS_WORLD_ANGLES(s)                            s.angles
181
182         #define PHYS_DEAD(s)                                            s.deadflag != DEAD_NO
183
184         #define PHYS_BUTTON_HOOK(s)                                     s.BUTTON_HOOK
185
186         #define GAMEPLAYFIX_GRAVITYUNAFFECTEDBYTICRATE  autocvar_sv_gameplayfix_gravityunaffectedbyticrate
187         #define GAMEPLAYFIX_NOGRAVITYONGROUND                   cvar("sv_gameplayfix_nogravityonground")
188         #define GAMEPLAYFIX_Q2AIRACCELERATE                             autocvar_sv_gameplayfix_q2airaccelerate
189
190         #define IS_DUCKED(s)                                            s.crouch
191         #define SET_DUCKED(s)                                           s.crouch = TRUE
192         #define UNSET_DUCKED(s)                                         s.crouch = FALSE
193
194         #define IS_JUMP_HELD(s)                                         (s.flags & FL_JUMPRELEASED == 0)
195         #define SET_JUMP_HELD(s)                                        s.flags &= ~FL_JUMPRELEASED
196         #define UNSET_JUMP_HELD(s)                                      s.flags |= FL_JUMPRELEASED
197
198         #define IS_ONGROUND(s)                                          (s.flags & FL_ONGROUND)
199         #define SET_ONGROUND(s)                                         s.flags |= FL_ONGROUND
200         #define UNSET_ONGROUND(s)                                       s.flags &= ~FL_ONGROUND
201
202         #define ITEMS(s)                                                        s.items
203
204         #define PHYS_AMMO_FUEL(s)                                       s.ammo_fuel
205
206         #define PHYS_FROZEN(s)                                          s.frozen
207
208         #define PHYS_ACCELERATE                                         autocvar_sv_accelerate
209         #define PHYS_AIRACCEL_QW(s)                                     s.stat_sv_airaccel_qw
210         #define PHYS_AIRACCEL_QW_STRETCHFACTOR(s)       autocvar_sv_airaccel_qw_stretchfactor
211         #define PHYS_AIRACCEL_SIDEWAYS_FRICTION         autocvar_sv_airaccel_sideways_friction
212         #define PHYS_AIRACCELERATE                                      autocvar_sv_airaccelerate
213         #define PHYS_AIRCONTROL                                         autocvar_sv_aircontrol
214         #define PHYS_AIRCONTROL_PENALTY                         autocvar_sv_aircontrol_penalty
215         #define PHYS_AIRCONTROL_POWER                           autocvar_sv_aircontrol_power
216         #define PHYS_AIRSPEEDLIMIT_NONQW(s)                     s.stat_sv_airspeedlimit_nonqw
217         #define PHYS_AIRSTOPACCELERATE                          autocvar_sv_airstopaccelerate
218         #define PHYS_AIRSTRAFEACCEL_QW(s)                       s.stat_sv_airstrafeaccel_qw
219         #define PHYS_AIRSTRAFEACCELERATE                        autocvar_sv_airstrafeaccelerate
220         #define PHYS_ENTGRAVITY(s)                                      s.gravity
221         #define PHYS_FRICTION                                           autocvar_sv_friction
222         #define PHYS_GRAVITY                                            autocvar_sv_gravity
223         #define PHYS_HIGHSPEED                                          autocvar_g_movement_highspeed
224         #define PHYS_JUMPVELOCITY                                       autocvar_sv_jumpvelocity
225         #define PHYS_MAXAIRSPEED                                        autocvar_sv_maxairspeed
226         #define PHYS_MAXAIRSTRAFESPEED                          autocvar_sv_maxairstrafespeed
227         #define PHYS_MAXSPEED(s)                                        s.stat_sv_maxspeed
228         #define PHYS_STEPHEIGHT                                         autocvar_sv_stepheight
229         #define PHYS_STOPSPEED                                          autocvar_sv_stopspeed
230         #define PHYS_WARSOWBUNNY_ACCEL                          autocvar_sv_warsowbunny_accel
231         #define PHYS_WARSOWBUNNY_BACKTOSIDERATIO        autocvar_sv_warsowbunny_backtosideratio
232         #define PHYS_WARSOWBUNNY_AIRFORWARDACCEL        autocvar_sv_warsowbunny_airforwardaccel
233         #define PHYS_WARSOWBUNNY_TOPSPEED                       autocvar_sv_warsowbunny_topspeed
234         #define PHYS_WARSOWBUNNY_TURNACCEL                      autocvar_sv_warsowbunny_turnaccel
235
236         #define PHYS_JETPACK_ACCEL_UP                           autocvar_g_jetpack_acceleration_up
237         #define PHYS_JETPACK_ACCEL_SIDE                         autocvar_g_jetpack_acceleration_side
238         #define PHYS_JETPACK_ANTIGRAVITY                        autocvar_g_jetpack_antigravity
239         #define PHYS_JETPACK_FUEL                                       autocvar_g_jetpack_fuel
240         #define PHYS_JETPACK_MAXSPEED_UP                        autocvar_g_jetpack_maxspeed_up
241         #define PHYS_JETPACK_MAXSPEED_SIDE                      autocvar_g_jetpack_maxspeed_side
242
243         #define PHYS_DODGING_FRAMETIME                          sys_frametime
244         #define PHYS_DODGING                                            g_dodging
245         #define PHYS_DODGING_DELAY                                      autocvar_sv_dodging_delay
246         #define PHYS_DODGING_TIMEOUT(s)                         s.cvar_cl_dodging_timeout
247         #define PHYS_DODGING_HORIZ_SPEED_FROZEN         autocvar_sv_dodging_horiz_speed_frozen
248         #define PHYS_DODGING_FROZEN                                     autocvar_sv_dodging_frozen
249         #define PHYS_DODGING_FROZEN_NODOUBLETAP         autocvar_sv_dodging_frozen_doubletap
250         #define PHYS_DODGING_HORIZ_SPEED                        autocvar_sv_dodging_horiz_speed
251         #define PHYS_DODGING_PRESSED_KEYS(s)            s.pressedkeys
252         #define PHYS_DODGING_HEIGHT_THRESHOLD           autocvar_sv_dodging_height_threshold
253         #define PHYS_DODGING_DISTANCE_THRESHOLD         autocvar_sv_dodging_wall_distance_threshold
254         #define PHYS_DODGING_RAMP_TIME                          autocvar_sv_dodging_ramp_time
255         #define PHYS_DODGING_UP_SPEED                           autocvar_sv_dodging_up_speed
256         #define PHYS_DODGING_WALL                                       autocvar_sv_dodging_wall_dodging
257
258 #endif