// This file is distributed under the id Software source license. // See the file id_license.txt for details. #ifndef __Q2UTILS_H #define __Q2UTILS_H #include "q2defines.h" extern vec3_t vec3_origin; // math/vectors extern void RotatePointAroundVector( vec3_t dst, const vec3_t dir, const vec3_t point, float degrees ); extern void AngleVectors (vec3_t angles, vec3_t forward, vec3_t right, vec3_t up); extern void ProjectPointOnPlane( vec3_t dst, const vec3_t p, const vec3_t normal ); extern void PerpendicularVector( vec3_t dst, const vec3_t src ); extern void R_ConcatRotations (float in1[3][3], float in2[3][3], float out[3][3]); extern void R_ConcatTransforms (float in1[3][4], float in2[3][4], float out[3][4]); extern float Q_fabs (float f); extern float LerpAngle (float a2, float a1, float frac); extern float anglemod(float a); extern int BoxOnPlaneSide2 (vec3_t emins, vec3_t emaxs, struct cplane_s *p); extern int BoxOnPlaneSide (vec3_t emins, vec3_t emaxs, struct cplane_s *p); extern void ClearBounds (vec3_t mins, vec3_t maxs); extern void AddPointToBounds (vec3_t v, vec3_t mins, vec3_t maxs); extern vec_t VectorNormalize (vec3_t v); extern vec_t VectorNormalize2 (vec3_t v, vec3_t out); extern void VectorMA (vec3_t veca, float scale, vec3_t vecb, vec3_t vecc); extern vec_t _DotProduct (vec3_t v1, vec3_t v2); extern void _VectorSubtract (vec3_t veca, vec3_t vecb, vec3_t out); extern void _VectorAdd (vec3_t veca, vec3_t vecb, vec3_t out); extern void _VectorCopy (vec3_t in, vec3_t out); extern void CrossProduct (vec3_t v1, vec3_t v2, vec3_t cross); extern vec_t VectorLength(vec3_t v); extern void VectorInverse (vec3_t v); extern void VectorScale (vec3_t in, vec_t scale, vec3_t out); extern int Q_log2(int val); // file paths extern char *COM_SkipPath (char *pathname); extern void COM_StripExtension (const char *in, char *out); extern char *COM_FileExtension (const char *in); extern void COM_FileBase (const char *in, char *out); extern void COM_FilePath (const char *in, char *out); extern void COM_DefaultExtension (char *path, const char *extension); // strings extern char *va(const char *format, ...); extern char *COM_Parse (char **data_p); extern void Com_PageInMemory (byte *buffer, int size); extern int Q_stricmp (const char *s1, const char *s2); extern int Q_strncasecmp (const char *s1, const char *s2, int n); extern int Q_strcasecmp (const char *s1, const char *s2); extern void Com_sprintf (char *dest, int size, const char *fmt, ...); // userinfo strings extern char *Info_ValueForKey (const char *s, const char *key); extern void Info_RemoveKey (char *s, const char *key); extern qboolean Info_Validate (const char *s); extern void Info_SetValueForKey (char *s, const char *key, const char *value); // g_utils.c extern void G_ProjectSource (vec3_t point, vec3_t distance, vec3_t forward, vec3_t right, vec3_t result); extern float *tv (float x, float y, float z); extern char *vtos (vec3_t v); extern float vectoyaw (vec3_t vec); extern void vectoangles (vec3_t value1, vec3_t angles); #endif // __Q2UTILS_H