Nuclide
Software Development Kit for id Tech
defs.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2016-2022 Vera Visions LLC.
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
14 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*/
16
17#include "text.h"
18#include "textmenu.h"
19#include "efx.h"
20#include "font.h"
21#include "fade.h"
22#include "cmd.h"
23#include "util.h"
24#include "NSView.h"
25#include "NSRadar.h"
26#include "crosshair.h"
27#include "../shared/weapons.h"
28#include "../shared/weapon_common.h"
29
30var bool g_net_debug = false;
31var bool g_cheats = false;
32
33#define PRINTFLAG(x) if (cvar("net_showUpdates") || g_net_debug) \
34 print(sprintf("%f %s read update %s\n", time, classname, #x));
35
36#define READENTITY_BYTE(field, changedflag) {\
37 if (flChanged & changedflag) {\
38 field = readbyte();\
39 PRINTFLAG(changedflag); \
40 }\
41}
42
43#define READENTITY_SHORT(field, changedflag) {\
44 if (flChanged & changedflag) {\
45 field = readshort();\
46 PRINTFLAG(changedflag); \
47 }\
48}
49
50#define READENTITY_FLOAT(field, changedflag) {\
51 if (flChanged & changedflag) {\
52 field = readfloat();\
53 PRINTFLAG(changedflag); \
54 }\
55}
56
57#define READENTITY_INT(field, changedflag) {\
58 if (flChanged & changedflag) {\
59 field = readint();\
60 PRINTFLAG(changedflag); \
61 }\
62}
63
64#define READENTITY_STRING(field, changedflag) {\
65 if (flChanged & changedflag) {\
66 field = readstring();\
67 PRINTFLAG(changedflag); \
68 }\
69}
70
71#define READENTITY_COORD(field, changedflag) {\
72 if (flChanged & changedflag) {\
73 field = readcoord();\
74 PRINTFLAG(changedflag); \
75 }\
76}
77
78#define READENTITY_ANGLE(field, changedflag) {\
79 if (flChanged & changedflag) {\
80 field = readangle();\
81 PRINTFLAG(changedflag); \
82 }\
83}
84
85#define READENTITY_ENTITY(field, changedflag) {\
86 if (flChanged & changedflag) {\
87 field = findfloat(world, ::entnum, readentitynum());\
88 PRINTFLAG(changedflag); \
89 }\
90}
91
92#define READENTITY_ENTNUM(field, changedflag) {\
93 if (flChanged & changedflag) {\
94 field = readentitynum();\
95 PRINTFLAG(changedflag); \
96 }\
97}
98
99#define READENTITY_COLOR(field, changedflag) {\
100 if (flChanged & changedflag) {\
101 field = readbyte() / 255;\
102 PRINTFLAG(changedflag); \
103 }\
104}
105
106/* undocumented printcall types */
107#define PRINT_LOW 0
108#define PRINT_MEDIUM 1
109#define PRINT_HIGH 2
110#define PRINT_CHAT 3
111
112var bool g_dlight_cached = false;
113var bool g_client_world_loaded = false;
114
115const float MASK_GLOWS = 16;
116var bool g_focus;
117bool Util_IsFocused(void);
118
120int Util_GetMaxPlayers(void);
121
122/* fonts */
126
127//var string g_shellchrome;
130
131/* clientside cvars */
136var vector autocvar_con_color = [255,150,0];
137var vector autocvar_vgui_color = [255,170,0];
140var float autocvar_cg_viewmodelFov = 90.0f;
142var float autocvar_cg_hudAspect = 0.0f;
144
145/* particle descriptors */
147var float PART_BURNING;
148
149/* misc globals */
154
155/* this actually belongs in builtins.h since its an undocumented global */
157
158string(string modelname, int frame, float frametime) spriteframe = #0;
159
160void CSQC_UpdateSeat(void);
161
163void
164drawstring_r(vector p, string t, vector s, vector c, float a, float f)
165{
166 p[0] -= stringwidth(t, TRUE, s);
167 drawstring(p, t, s, c, a, f);
168}
169
170void GameMessage_Setup(string, int);
171void View_SetMuzzleflash(int);
172
173void Event_Callback(float mtime, __inout float btime);
174void View_AddEvent(void(void) pCallback, float flTime);
175void View_PlayAnimation(int);
176void View_PlayAnimation(int);
177
178void View_EnableViewmodel(void);
179void View_DisableViewmodel(void);
180void View_SetViewmodelSkin(float);
181
183void drawrect(vector pos, vector sz, float thickness, vector rgb, float al, optional float dfl)
184{
185 /* top */
186 drawfill(pos, [sz[0], thickness], rgb, al, dfl);
187 /* bottom */
188 drawfill(pos + [0, sz[1] - thickness], [sz[0], thickness], rgb, al, dfl);
189 /* left */
190 drawfill(pos + [0, thickness], [thickness, sz[1] - (thickness * 2)], rgb, al, dfl);
191 /* right */
192 drawfill(pos + [sz[0] - thickness, thickness], [thickness, sz[1] - (thickness * 2)], rgb, al, dfl);
193}
194
195
199void
200drawpic3d(vector worldpos, string mat, vector sz, vector rgb, float alpha)
201{
202 static bool
203 drawpic3d_visible(vector p1) {
204 vector delta;
205 float fov;
208
209 makevectors(ang);
210 delta = normalize (p1 - p2);
211 fov = delta * v_forward;
212
213 if (fov > (g_view.GetAFOV()/180)) {
214 traceline(p2, p1, MOVE_WORLDONLY, self);
215 if (trace_fraction == 1.0) {
216 return (1);
217 }
218 }
219 return (0);
220 }
221
222 if (drawpic3d_visible(worldpos) == true) {
223 vector vecProj = project(worldpos) - (sz/2);
224 drawpic(vecProj, mat, sz, rgb, alpha);
225 }
226}
227
229void
230drawcone(vector vecOrigin, vector vecAngle, int iDivisions, float flLength, float flRadius, vector vecColor, float flAlpha)
231{
232 vector c;
233 vector e0;
234 vector e1;
235 float angDelta;
236
237 static vector
238 perpendicularCross(vector v)
239 {
240 float min = fabs(v[0]);
241 vector ca = [1, 0, 0];
242
243 if (fabs(v[1]) < min) {
244 min = fabs(v.y);
245 ca = [0, 1, 0];
246 }
247
248 if (fabs(v[2]) < min) {
249 ca = [0, 0, 1];
250 }
251
252 return crossproduct(v, ca);
253 }
254
255 makevectors(vecAngle + [0, 0, 0]);
256 vecAngle = v_forward * -1;
257 c = vecOrigin + (-vecAngle * flLength);
258 e0 = perpendicularCross(vecAngle);
259 e1 = crossproduct(e0, vecAngle);
260 angDelta = 360.0 / (iDivisions-1) * (M_PI / 180.0f);
261
262 R_BeginPolygon("debugcone");
263 R_PolygonVertex(vecOrigin, [0,0], vecColor, flAlpha);
264 for (int i = 0; i < iDivisions; ++i) {
265 vector vecPoint;
266 float rad = angDelta * i;
267 vecPoint = c + (((e0 * cos(rad)) + (e1 * sin(rad))) * flRadius);
268 R_PolygonVertex(vecPoint, [0,0], vecColor, flAlpha);
269 }
270 R_EndPolygon();
271}
272
274void
276{
277 precache_pic(strcat(path, "_bk"));
278 precache_pic(strcat(path, "_dn"));
279 precache_pic(strcat(path, "_ft"));
280 precache_pic(strcat(path, "_lf"));
281 precache_pic(strcat(path, "_rt"));
282 precache_pic(strcat(path, "_up"));
283}
284
285typedef enum
286{
291
292struct
293{
294 /* viewmodel stuff */
301
302 void(void) m_pEventCall;
307
310
311 /* damage overlay */
315
316 /* +zoomin cmd */
319
320 /* player fields */
326
327 /* camera fields */
331
334
336
337 /* saturn controller */
339
340 /* centerprint related */
345
346 /* chat related */
350
361
362 /* fading */
372
373 /* shake */
378
380
381 /* vehicles */
384
385 /* new XR helpers */
387
390
395
399
NSView handles camera and viewpoints.
NSView g_view
the current seat run for each draw call, for each player.
Definition: NSView.h:144
Tasked with managing overview/radar type widgets.
Definition: NSRadar.h:23
nonvirtual vector GetCameraAngle(void)
Returns the 3D direction of the NSView.
Definition: NSView.qc:162
nonvirtual vector GetCameraOrigin(void)
Returns the 3D world coordinate of the NSView.
Definition: NSView.qc:156
nonvirtual float GetAFOV(void)
Returns the absolute field of view of the NSView.
Definition: NSView.qc:205
entity m_eViewModel
Definition: defs.h:295
float m_flFadeDuration
Definition: defs.h:363
vector m_vecPredictedOrigin
Definition: defs.h:322
const float MASK_GLOWS
Definition: defs.h:115
float m_flFadeTime
Definition: defs.h:368
movementStance_t
Definition: defs.h:286
@ STANCE_PRONE
Definition: defs.h:289
@ STANCE_CROUCH
Definition: defs.h:288
@ STANCE_DEFAULT
Definition: defs.h:287
var bool g_net_debug
Definition: defs.h:30
float m_flEventMdl
Definition: defs.h:305
int m_iFadeActive
Definition: defs.h:371
int m_iOldWeapon
Definition: defs.h:309
void View_PlayAnimation(int)
Definition: view.qc:337
float m_flInputBlockTime
Definition: defs.h:360
var vector autocvar_cg_viewmodelOffset
Definition: defs.h:138
movementStance_t m_dForceStance
Definition: defs.h:359
float m_flVehTransition
Definition: defs.h:382
bool m_bInterfaceFocused
Definition: defs.h:388
string m_strCenterprintBuffer[18]
Definition: defs.h:344
string m_strPrintBuffer[5]
Definition: defs.h:348
struct @1 * pSeat[4]
void View_EnableViewmodel(void)
Definition: view.qc:360
int m_iSprinting
Definition: defs.h:393
bool m_iInputSprint
Definition: defs.h:356
void CSQC_UpdateSeat(void)
Updates our seat pointers.
Definition: entry.qc:23
var NSRadar g_overview
Definition: defs.h:400
var int autocvar_pm_thirdPerson
Definition: defs.h:134
float m_flZoomTime
Definition: defs.h:318
entity m_ePlayer
Definition: defs.h:321
float m_flSprintLerp
Definition: defs.h:369
float m_iCenterprintLines
Definition: defs.h:343
int m_iScoresVisible
Definition: defs.h:335
float m_flShakeFreq
Definition: defs.h:374
int m_iLastWeapon
Definition: defs.h:308
int m_iVMBonesL
Definition: defs.h:300
int m_iPrintLines
Definition: defs.h:349
vector m_vecVehEntry
Definition: defs.h:383
entity m_eViewModelL
Definition: defs.h:298
var float autocvar_in_zoomSensitivity
Definition: defs.h:132
int m_iLeanDir
Definition: defs.h:391
font_s FONT_20
Definition: defs.h:124
float m_flEventTime
Definition: defs.h:303
var float autocvar_cg_viewmodelScale
Definition: defs.h:141
var float PART_BURNING
Definition: defs.h:147
int Util_GetMaxPlayers(void)
Definition: util.qc:89
bool m_bSpecInput
Definition: defs.h:389
vector m_vecPredictedVelocity
Definition: defs.h:324
void drawcone(vector vecOrigin, vector vecAngle, int iDivisions, float flLength, float flRadius, vector vecColor, float flAlpha)
Draws a (debug) cone in 3D space.
Definition: defs.h:230
struct @1 g_seats[4]
void drawrect(vector pos, vector sz, float thickness, vector rgb, float al, optional float dfl)
Draws a non-filled rectangle with a specified outline.
Definition: defs.h:183
var bool g_client_world_loaded
Definition: defs.h:113
var int g_numplayerslots
Definition: defs.h:119
float m_flPrintTime
Definition: defs.h:347
float m_flFadeHold
Definition: defs.h:364
float m_flFadeMaxAlpha
Definition: defs.h:365
bool m_iInputJump
Definition: defs.h:358
vector m_vecLag
Definition: defs.h:379
float m_flShakeAmp
Definition: defs.h:377
var float autocvar_cg_hudAspect
Definition: defs.h:142
void View_SetMuzzleflash(int)
Definition: view.qc:48
vector mouse_pos
Definition: defs.h:152
bool m_iInputUse
Definition: defs.h:354
var vector g_hudres
Definition: defs.h:398
float m_flShakeDuration
Definition: defs.h:375
vector video_mins
Definition: defs.h:150
entity m_eMuzzleflashL
Definition: defs.h:299
void Event_Callback(float mtime, __inout float btime)
Definition: modelevent.qc:27
float m_flEventFrame
Definition: defs.h:304
var vector autocvar_vgui_color
Definition: defs.h:137
var float g_shellchromeshader_cull
Definition: defs.h:129
vector m_vecDamagePos
Definition: defs.h:313
var int autocvar_cg_viewmodelFlip
Definition: defs.h:135
var float g_shellchromeshader
Definition: defs.h:128
bool m_iInputDuck
Definition: defs.h:355
font_s FONT_CON
Definition: defs.h:125
void drawstring_r(vector p, string t, vector s, vector c, float a, float f)
Like drawstring() but aligns text to the right from the specified screen coordinates.
Definition: defs.h:164
void View_SetViewmodelSkin(float)
Definition: view.qc:380
vector video_res
Definition: defs.h:151
float m_flPredictedFlags
Definition: defs.h:325
var vector g_hudmins
Definition: defs.h:397
float m_flShakeTime
Definition: defs.h:376
float m_flDamageAlpha
Definition: defs.h:312
bool m_bMoveForward
Definition: defs.h:386
float m_flCenterprintTime
Definition: defs.h:342
int m_iEventWeapon
Definition: defs.h:306
var vector g_vecMousePos
Definition: defs.h:396
vector m_vecFadeColor
Definition: defs.h:370
bool m_iInputReload
Definition: defs.h:353
void View_AddEvent(void(void) pCallback, float flTime)
Definition: view.qc:57
font_s FONT_16
Definition: defs.h:123
var float autocvar_cg_viewmodelFov
Definition: defs.h:140
var bool g_dlight_cached
Definition: defs.h:112
var bool autocvar_pm_crouchToggle
Definition: defs.h:143
var int autocvar_cg_viewmodelPass
Definition: defs.h:139
bool m_iInputAttack
Definition: defs.h:351
int g_iIntermission
Definition: defs.h:153
float m_flLeaning
Definition: defs.h:392
float clframetime
Definition: defs.h:156
float m_flFadeStyle
Definition: defs.h:366
vector m_vecCameraOrigin
Definition: defs.h:328
float m_flCameraTime
Definition: defs.h:330
entity m_eMuzzleflash
Definition: defs.h:296
int m_iVMBones
Definition: defs.h:297
var vector autocvar_con_color
Definition: defs.h:136
int m_iDamageFlags
Definition: defs.h:314
int m_iSaturnMenu
Definition: defs.h:338
float m_flFadeAlpha
Definition: defs.h:367
vector m_vecCameraAngle
Definition: defs.h:329
float m_flHUDWeaponSelectTime
Definition: defs.h:333
void View_DisableViewmodel(void)
Definition: view.qc:370
void GameMessage_Setup(string, int)
Definition: text.qc:262
var float PART_DUSTMOTE
Definition: defs.h:146
void drawpic3d(vector worldpos, string mat, vector sz, vector rgb, float alpha)
Like drawpic, but instead of screen coords, it will take world coords.
Definition: defs.h:200
bool m_iInputAttack2
Definition: defs.h:352
int m_iZoomed
Definition: defs.h:317
var bool g_cheats
Definition: defs.h:31
void precache_cubemap(string path)
Like precache_pic, but will precache sky/cube map images (_bk, _dn etc.)
Definition: defs.h:275
bool m_iInputProne
Definition: defs.h:357
vector m_vecPredictedOriginOld
Definition: defs.h:323
string(string modelname, int frame, float frametime) spriteframe
var int autocvar_pm_stairSmoothing
Definition: defs.h:133
var bool g_focus
Definition: defs.h:116
int m_iHUDWeaponSelected
Definition: defs.h:332
bool Util_IsFocused(void)
Definition: util.qc:83
float m_flCenterprintAlpha
Definition: defs.h:341
Crosshair helper functions.
entity self
Definition: fteextensions.qc:274
get float f
Definition: fteextensions.qc:3825
const float FALSE
Definition: fteextensions.qc:863
const float M_PI
Definition: fteextensions.qc:864
vector(vector) normalize
entity() spawn
const float TRUE
Definition: fteextensions.qc:862
get __int i
Definition: fteextensions.qc:3826
string s
Definition: fteextensions.qc:3376
get jsonnode a[__int key]
Definition: fteextensions.qc:3828
vector v_forward
Definition: math.h:39
void makevectors(vector angles)
Definition: math.h:42
void(void) PlayerUse
__wrap void traceline(vector v1, vector v2, float flags, entity ent)
Definition: defs.h:307
Representation of a font.
Definition: font.h:38
noref float frame
Definition: ui_3dview.qc:22