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