1 // This file is distributed under the id Software source license.
2 // See the file id_license.txt for details.
3 
4 #ifndef __Q2UTILS_H
5 #define __Q2UTILS_H
6 
7 #include "q2defines.h"
8 
9 extern vec3_t vec3_origin;
10 
11 // math/vectors
12 extern void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees );
13 extern void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up);
14 extern void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal );
15 extern void PerpendicularVector( vec3_t dst, const vec3_t src );
16 extern void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]);
17 extern void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]);
18 extern float Q_fabs (float f);
19 extern float LerpAngle (float a2, float a1, float frac);
20 extern float anglemod(float a);
21 extern int BoxOnPlaneSide2 (vec3_t emins, vec3_t emaxs, struct cplane_s *p);
22 extern int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p);
23 extern void ClearBounds (vec3_t mins, vec3_t maxs);
24 extern void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs);
25 extern vec_t VectorNormalize (vec3_t v);
26 extern vec_t VectorNormalize2 (vec3_t v, vec3_t out);
27 extern void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc);
28 extern vec_t _DotProduct (vec3_t v1, vec3_t v2);
29 extern void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out);
30 extern void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out);
31 extern void _VectorCopy (vec3_t in, vec3_t out);
32 extern void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross);
33 extern vec_t VectorLength(vec3_t v);
34 extern void VectorInverse (vec3_t v);
35 extern void VectorScale (vec3_t in, vec_t scale, vec3_t out);
36 extern int Q_log2(int val);
37 
38 // file paths
39 extern char *COM_SkipPath (char *pathname);
40 extern void COM_StripExtension (const char *in, char *out);
41 extern char *COM_FileExtension (const char *in);
42 extern void COM_FileBase (const char *in, char *out);
43 extern void COM_FilePath (const char *in, char *out);
44 extern void COM_DefaultExtension (char *path, const char *extension);
45 
46 // strings
47 extern char *va(const char *format, ...);
48 extern char *COM_Parse (char **data_p);
49 extern void Com_PageInMemory (byte *buffer, int size);
50 extern int Q_stricmp (const char *s1, const char *s2);
51 extern int Q_strncasecmp (const char *s1, const char *s2, int n);
52 extern int Q_strcasecmp (const char *s1, const char *s2);
53 extern void Com_sprintf (char *dest, int size, const char *fmt, ...);
54 
55 // userinfo strings
56 extern char *Info_ValueForKey (const char *s, const char *key);
57 extern void Info_RemoveKey (char *s, const char *key);
58 extern qboolean Info_Validate (const char *s);
59 extern void Info_SetValueForKey (char *s, const char *key, const char *value);
60 
61 // g_utils.c
62 extern void G_ProjectSource (vec3_t point, vec3_t distance, vec3_t forward, vec3_t right, vec3_t result);
63 extern float	*tv (float x, float y, float z);
64 extern char *vtos (vec3_t v);
65 extern float vectoyaw (vec3_t vec);
66 extern void vectoangles (vec3_t value1, vec3_t angles);
67 
68 #endif	// __Q2UTILS_H
69