NOTE : Underscores Some of the functions are given as two versions, those with a leading underscore and those without. Those with the underscore are actual functions. Those without are macros #defined in q_shared.h. I believe that the #defined versions are more efficient (may be no difference, depends on compiler?). In general you should use the versions without the underscore. NOTE : Format of Quake2 variables vector - represented by type vec3_t, basically an array of floats, with : vector[0] = x coordinate vector[1] = y coordinate vector[2] = z coordinate angles - also represented by type vec3_t, this time with: angles[0] = pitch (up and down) angles[1] = yaw (turn left and right) angles[2] = roll (tilt left and right, not really used) angle - represented by a float Angles anglemod (angle) returns the equivalent of angle between 0 and 360 degrees LerpAngle (angle1, angle2, fraction) returns the angle resulting from turning fraction * angle from angle1 to angle2 (and if you can't make sense of that, don't worry, this isn't actually used anywhere) Bounding Box AddPointToBounds (point, mins, maxs) if the point is outside the box defined by mins and maxs, expand the box to accomodate it. sets mins and maxs to their new values ClearBounds (mins, maxs) sets mins and maxs to starting points before using AddPointToBounds Floats Q_fabs (number) if the number is < 0, returns -1 * number, otherwise returns the number Q_log2 (number) returns the log to base 2 of the number Info strings Info_RemoveKey (string, key) searches through string for key, then removes it Info_SetValueForKey (string, key, value) adds a new entry 'key' into string with value 'value'. removes any old versions of key. NOTE : value should be a string Info_ValueForKey (string, key) searches through string for key, then retunrs the value associated with key Strings Q_strcasecmp (string1, string2) compares string1 and string2, returning 0 if they are the same NOTE : ignores case Q_stricmp (string1, string2) compares the two strings, returning 0 if they are identical NOTE : case must be identical Q_strncasecmp (string1, string2, number) compares the first 'number' letters in string1 and string2, returning 0 if they are the same NOTE : ignores case Vectors AngleVectors (angles, forward_vector, right_vector, up_vector) Converts the angles into various vectors : forward_vector : vector along angles right_vector : vector 90 degrees to the right of forward_vector up_vector : vector 90 up from forward_vector CrossProduct (vector1, vector2, vector_out) sets vector_out to the cross product of vector1 and vector2 NOTE on cross product : This gives a vector perpendicular to vector1 and vector2, of length : 'length vector1' * 'length vector2' * sin (angle from vector1 to vector2) If you want to know how it's calculated, look at the code in q_shared.c DotProduct (vector1, vector2), _DotProduct (vector1, vector2) gives the dot product of vector1 and vector2 NOTE on dot product : This is calculated by vector1[0]*vector2[0] + vector1[1]*vector2[1] + vector1[2] * vector2[2] It is also equal to 'length of vector1' * 'length of vector2' * cos (angle between vectors) vectoangles (vector, angles) Sets the angles array to point in the same direction as the vector VectorAdd (vector1,vector2,vector_out), _VectorAdd (vector1,vector2,vector_out) adds vector1 to vector2 and puts the result in vector_out VectorClear (vector) sets the vector to <0,0,0> VectorCompare (vector1, vector2) returns 1 if the vectors are the same and 0 otherwise VectorCopy (vector_in,vector_out), _VectorCopy (vector_in,vector_out) copies vector_in to vector_out VectorInverse (vector) sets vector to -1 * vector VectorLength (vector) returns the length of the vector VectorMA (vector1, scale, vector2, vector_out) sets vector_out to : vector1 + scale * vector2 VectorNegate (vector_in, vector_out) sets vector_out to -1 * vector_in VectorNormalize (vector) returns a vector in the same direction as the given vector, but only one unit long VectorNormalize2 (vector_in, vector_out) sets vector_out to the normalised version of vector_in. returns the length of vector_in VectorScale (vector_in, scale, vector_out) sets vector_out to scale * vector_in VectorSet (vector, x, y, z) sets the x coordinate of vector to x, the y coordinate to y, etc. VectorSubtract (vector1,vector2,vector_out), _VectorSubtract (vector1,vector2,vector_out) subtracts vector2 from vector1 and puts the result in vector_out vectoyaw (vector) Returns the yaw component of the angles vector vtos (vector) converts a vector into a string Returns the string