X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=libs%2Fsplines%2Fq_shared.h;h=6cad80bc97eec9ac4f5e2b8cbaa6e7a1e57874d9;hb=e4287c28bb2dafedc81c66e63951d947cfbeb225;hp=00d56403f010cdda3c8f53855880737308be6644;hpb=203343b01a7ad87cb3d136689c9936ff5bc23c01;p=xonotic%2Fnetradiant.git diff --git a/libs/splines/q_shared.h b/libs/splines/q_shared.h index 00d56403..6cad80bc 100644 --- a/libs/splines/q_shared.h +++ b/libs/splines/q_shared.h @@ -1,23 +1,23 @@ /* -Copyright (C) 1999-2006 Id Software, Inc. and contributors. -For a list of contributors, see the accompanying CONTRIBUTORS file. + Copyright (C) 1999-2006 Id Software, Inc. and contributors. + For a list of contributors, see the accompanying CONTRIBUTORS file. -This file is part of GtkRadiant. + This file is part of GtkRadiant. -GtkRadiant is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + GtkRadiant is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -GtkRadiant is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + GtkRadiant is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with GtkRadiant; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + You should have received a copy of the GNU General Public License + along with GtkRadiant; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ #ifndef __Q_SHARED_H #define __Q_SHARED_H @@ -29,31 +29,31 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // A user mod should never modify this file -#define Q3_VERSION "DOOM 0.01" +#define Q3_VERSION "DOOM 0.01" // alignment macros for SIMD -#define ALIGN_ON -#define ALIGN_OFF +#define ALIGN_ON +#define ALIGN_OFF #ifdef _WIN32 #pragma warning(disable : 4018) // signed/unsigned mismatch #pragma warning(disable : 4032) #pragma warning(disable : 4051) -#pragma warning(disable : 4057) // slightly different base types -#pragma warning(disable : 4100) // unreferenced formal parameter +#pragma warning(disable : 4057) // slightly different base types +#pragma warning(disable : 4100) // unreferenced formal parameter #pragma warning(disable : 4115) -#pragma warning(disable : 4125) // decimal digit terminates octal escape sequence -#pragma warning(disable : 4127) // conditional expression is constant +#pragma warning(disable : 4125) // decimal digit terminates octal escape sequence +#pragma warning(disable : 4127) // conditional expression is constant #pragma warning(disable : 4136) #pragma warning(disable : 4201) #pragma warning(disable : 4214) #pragma warning(disable : 4244) -#pragma warning(disable : 4305) // truncation from const double to float -#pragma warning(disable : 4310) // cast truncates constant value +#pragma warning(disable : 4305) // truncation from const double to float +#pragma warning(disable : 4310) // cast truncates constant value #pragma warning(disable : 4514) -#pragma warning(disable : 4711) // selected for automatic inline expansion -#pragma warning(disable : 4220) // varargs matches remaining parameters +#pragma warning(disable : 4711) // selected for automatic inline expansion +#pragma warning(disable : 4220) // varargs matches remaining parameters #endif @@ -65,8 +65,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include #include -#ifdef WIN32 // mac doesn't have malloc.h -#include // for _alloca() +#ifdef WIN32 // mac doesn't have malloc.h +#include // for _alloca() #endif #ifdef _WIN32 @@ -76,80 +76,80 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // this is the define for determining if we have an asm version of a C function -#if (defined _M_IX86 || defined __i386__) && !defined __sun__ && !defined __LCC__ -#define id386 1 +#if ( defined _M_IX86 || defined __i386__ ) && !defined __sun__ && !defined __LCC__ +#define id386 1 #else -#define id386 0 +#define id386 0 #endif // for windows fastcall option -#define QDECL +#define QDECL //======================= WIN32 DEFINES ================================= #ifdef WIN32 -#define MAC_STATIC +#define MAC_STATIC #undef QDECL -#define QDECL __cdecl +#define QDECL __cdecl // buildstring will be incorporated into the version string #ifdef NDEBUG #ifdef _M_IX86 -#define CPUSTRING "win-x86" +#define CPUSTRING "win-x86" #elif defined _M_ALPHA -#define CPUSTRING "win-AXP" +#define CPUSTRING "win-AXP" #endif #else #ifdef _M_IX86 -#define CPUSTRING "win-x86-debug" +#define CPUSTRING "win-x86-debug" #elif defined _M_ALPHA -#define CPUSTRING "win-AXP-debug" +#define CPUSTRING "win-AXP-debug" #endif #endif -#define PATH_SEP '\\' +#define PATH_SEP '\\' #endif //======================= MAC OS X SERVER DEFINES ===================== -#if defined(__MACH__) && defined(__APPLE__) +#if defined( __MACH__ ) && defined( __APPLE__ ) #define MAC_STATIC #ifdef __ppc__ -#define CPUSTRING "MacOSXS-ppc" +#define CPUSTRING "MacOSXS-ppc" #elif defined __i386__ -#define CPUSTRING "MacOSXS-i386" +#define CPUSTRING "MacOSXS-i386" #else -#define CPUSTRING "MacOSXS-other" +#define CPUSTRING "MacOSXS-other" #endif -#define PATH_SEP '/' +#define PATH_SEP '/' -#define GAME_HARD_LINKED -#define CGAME_HARD_LINKED -#define UI_HARD_LINKED +#define GAME_HARD_LINKED +#define CGAME_HARD_LINKED +#define UI_HARD_LINKED #define _alloca alloca #undef ALIGN_ON #undef ALIGN_OFF -#define ALIGN_ON #pragma align(16) -#define ALIGN_OFF #pragma align() +#define ALIGN_ON # pragma align( 16 ) +#define ALIGN_OFF # pragma align() #ifdef __cplusplus - extern "C" { +extern "C" { #endif -void *osxAllocateMemory(long size); -void osxFreeMemory(void *pointer); +void *osxAllocateMemory( long size ); +void osxFreeMemory( void *pointer ); #ifdef __cplusplus - } +} #endif #endif @@ -158,11 +158,11 @@ void osxFreeMemory(void *pointer); #ifdef __MACOS__ -#define MAC_STATIC static +#define MAC_STATIC static -#define CPUSTRING "MacOS-PPC" +#define CPUSTRING "MacOS-PPC" -#define PATH_SEP ':' +#define PATH_SEP ':' void Sys_PumpEvents( void ); @@ -170,16 +170,16 @@ void Sys_PumpEvents( void ); #ifdef __MRC__ -#define MAC_STATIC +#define MAC_STATIC -#define CPUSTRING "MacOS-PPC" +#define CPUSTRING "MacOS-PPC" -#define PATH_SEP ':' +#define PATH_SEP ':' void Sys_PumpEvents( void ); #undef QDECL -#define QDECL __cdecl +#define QDECL __cdecl #define _alloca alloca #endif @@ -190,43 +190,43 @@ void Sys_PumpEvents( void ); // just waste space and make big arrays static... #ifdef __linux__ -#define MAC_STATIC +#define MAC_STATIC #ifdef __i386__ -#define CPUSTRING "linux-i386" +#define CPUSTRING "linux-i386" #elif defined __axp__ -#define CPUSTRING "linux-alpha" +#define CPUSTRING "linux-alpha" #else -#define CPUSTRING "linux-other" +#define CPUSTRING "linux-other" #endif -#define PATH_SEP '/' +#define PATH_SEP '/' #endif //============================================================= - -typedef enum {qfalse, qtrue} qboolean; -typedef unsigned char byte; +typedef enum {qfalse, qtrue} qboolean; -#define EQUAL_EPSILON 0.001 +typedef unsigned char byte; -typedef int qhandle_t; -typedef int sfxHandle_t; -typedef int fileHandle_t; -typedef int clipHandle_t; +#define EQUAL_EPSILON 0.001 + +typedef int qhandle_t; +typedef int sfxHandle_t; +typedef int fileHandle_t; +typedef int clipHandle_t; typedef enum { INVALID_JOINT = -1 } jointHandle_t; #ifndef NULL -#define NULL ((void *)0) +#define NULL ( (void *)0 ) #endif -#define MAX_QINT 0x7fffffff -#define MIN_QINT (-MAX_QINT-1) +#define MAX_QINT 0x7fffffff +#define MIN_QINT ( -MAX_QINT - 1 ) #ifndef max #define max( x, y ) ( ( ( x ) > ( y ) ) ? ( x ) : ( y ) ) @@ -234,99 +234,99 @@ typedef enum { #endif #ifndef sign -#define sign( f ) ( ( f > 0 ) ? 1 : ( ( f < 0 ) ? -1 : 0 ) ) +#define sign( f ) ( ( f > 0 ) ? 1 : ( ( f < 0 ) ? -1 : 0 ) ) #endif // angle indexes -#define PITCH 0 // up / down -#define YAW 1 // left / right -#define ROLL 2 // fall over +#define PITCH 0 // up / down +#define YAW 1 // left / right +#define ROLL 2 // fall over // the game guarantees that no string from the network will ever // exceed MAX_STRING_CHARS -#define MAX_STRING_CHARS 1024 // max length of a string passed to Cmd_TokenizeString -#define MAX_STRING_TOKENS 256 // max tokens resulting from Cmd_TokenizeString -#define MAX_TOKEN_CHARS 1024 // max length of an individual token +#define MAX_STRING_CHARS 1024 // max length of a string passed to Cmd_TokenizeString +#define MAX_STRING_TOKENS 256 // max tokens resulting from Cmd_TokenizeString +#define MAX_TOKEN_CHARS 1024 // max length of an individual token -#define MAX_INFO_STRING 1024 -#define MAX_INFO_KEY 1024 -#define MAX_INFO_VALUE 1024 +#define MAX_INFO_STRING 1024 +#define MAX_INFO_KEY 1024 +#define MAX_INFO_VALUE 1024 -#define MAX_QPATH 64 // max length of a quake game pathname +#define MAX_QPATH 64 // max length of a quake game pathname #ifdef PATH_MAX -#define MAX_OSPATH PATH_MAX // max length of a filesystem pathname +#define MAX_OSPATH PATH_MAX // max length of a filesystem pathname #else -#define MAX_OSPATH 128 // max length of a filesystem pathname +#define MAX_OSPATH 128 // max length of a filesystem pathname #endif -#define MAX_NAME_LENGTH 32 // max length of a client name +#define MAX_NAME_LENGTH 32 // max length of a client name // paramters for command buffer stuffing typedef enum { - EXEC_NOW, // don't return until completed, a VM should NEVER use this, - // because some commands might cause the VM to be unloaded... - EXEC_INSERT, // insert at current position, but don't run yet - EXEC_APPEND // add to end of the command buffer (normal case) + EXEC_NOW, // don't return until completed, a VM should NEVER use this, + // because some commands might cause the VM to be unloaded... + EXEC_INSERT, // insert at current position, but don't run yet + EXEC_APPEND // add to end of the command buffer (normal case) } cbufExec_t; // // these aren't needed by any of the VMs. put in another header? // -#define MAX_MAP_AREA_BYTES 32 // bit vector of area visibility +#define MAX_MAP_AREA_BYTES 32 // bit vector of area visibility -#undef ERR_FATAL // malloc.h on unix +#undef ERR_FATAL // malloc.h on unix // parameters to the main Error routine typedef enum { ERR_NONE, - ERR_FATAL, // exit the entire game with a popup window - ERR_DROP, // print to console and disconnect from game - ERR_DISCONNECT, // don't kill server - ERR_NEED_CD // pop up the need-cd dialog + ERR_FATAL, // exit the entire game with a popup window + ERR_DROP, // print to console and disconnect from game + ERR_DISCONNECT, // don't kill server + ERR_NEED_CD // pop up the need-cd dialog } errorParm_t; // font rendering values used by ui and cgame -#define PROP_GAP_WIDTH 3 -#define PROP_SPACE_WIDTH 8 -#define PROP_HEIGHT 27 -#define PROP_SMALL_SIZE_SCALE 0.75 +#define PROP_GAP_WIDTH 3 +#define PROP_SPACE_WIDTH 8 +#define PROP_HEIGHT 27 +#define PROP_SMALL_SIZE_SCALE 0.75 -#define BLINK_DIVISOR 200 -#define PULSE_DIVISOR 75 +#define BLINK_DIVISOR 200 +#define PULSE_DIVISOR 75 -#define UI_LEFT 0x00000000 // default -#define UI_CENTER 0x00000001 -#define UI_RIGHT 0x00000002 -#define UI_FORMATMASK 0x00000007 -#define UI_SMALLFONT 0x00000010 -#define UI_BIGFONT 0x00000020 // default -#define UI_GIANTFONT 0x00000040 -#define UI_DROPSHADOW 0x00000800 -#define UI_BLINK 0x00001000 -#define UI_INVERSE 0x00002000 -#define UI_PULSE 0x00004000 +#define UI_LEFT 0x00000000 // default +#define UI_CENTER 0x00000001 +#define UI_RIGHT 0x00000002 +#define UI_FORMATMASK 0x00000007 +#define UI_SMALLFONT 0x00000010 +#define UI_BIGFONT 0x00000020 // default +#define UI_GIANTFONT 0x00000040 +#define UI_DROPSHADOW 0x00000800 +#define UI_BLINK 0x00001000 +#define UI_INVERSE 0x00002000 +#define UI_PULSE 0x00004000 /* -============================================================== + ============================================================== -MATHLIB + MATHLIB -============================================================== -*/ -#ifdef __cplusplus // so we can include this in C code -#define SIDE_FRONT 0 -#define SIDE_BACK 1 -#define SIDE_ON 2 -#define SIDE_CROSS 3 + ============================================================== + */ +#ifdef __cplusplus // so we can include this in C code +#define SIDE_FRONT 0 +#define SIDE_BACK 1 +#define SIDE_ON 2 +#define SIDE_CROSS 3 -#define Q_PI 3.14159265358979323846 +#define Q_PI 3.14159265358979323846 #ifndef M_PI -#define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h +#define M_PI 3.14159265358979323846 // matches value in gcc v2 math.h #endif #include "math_vector.h" @@ -334,94 +334,94 @@ MATHLIB #include "math_matrix.h" #include "math_quaternion.h" -class idVec3; // for defining vectors -typedef idVec3 &vec3_p; // for passing vectors as function arguments -typedef const idVec3 &vec3_c; // for passing vectors as const function arguments - -class angles_t; // for defining angle vectors -typedef angles_t &angles_p; // for passing angles as function arguments -typedef const angles_t &angles_c; // for passing angles as const function arguments +class idVec3; // for defining vectors +typedef idVec3 &vec3_p; // for passing vectors as function arguments +typedef const idVec3 &vec3_c; // for passing vectors as const function arguments + +class angles_t; // for defining angle vectors +typedef angles_t &angles_p; // for passing angles as function arguments +typedef const angles_t &angles_c; // for passing angles as const function arguments -class mat3_t; // for defining matrices -typedef mat3_t &mat3_p; // for passing matrices as function arguments -typedef const mat3_t &mat3_c; // for passing matrices as const function arguments +class mat3_t; // for defining matrices +typedef mat3_t &mat3_p; // for passing matrices as function arguments +typedef const mat3_t &mat3_c; // for passing matrices as const function arguments -#define NUMVERTEXNORMALS 162 -extern idVec3 bytedirs[NUMVERTEXNORMALS]; +#define NUMVERTEXNORMALS 162 +extern idVec3 bytedirs[NUMVERTEXNORMALS]; // all drawing is done to a 640*480 virtual screen size // and will be automatically scaled to the real resolution -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 - -#define TINYCHAR_WIDTH (SMALLCHAR_WIDTH) -#define TINYCHAR_HEIGHT (SMALLCHAR_HEIGHT/2) - -#define SMALLCHAR_WIDTH 8 -#define SMALLCHAR_HEIGHT 16 - -#define BIGCHAR_WIDTH 16 -#define BIGCHAR_HEIGHT 16 - -#define GIANTCHAR_WIDTH 32 -#define GIANTCHAR_HEIGHT 48 - -extern idVec4 colorBlack; -extern idVec4 colorRed; -extern idVec4 colorGreen; -extern idVec4 colorBlue; -extern idVec4 colorYellow; -extern idVec4 colorMagenta; -extern idVec4 colorCyan; -extern idVec4 colorWhite; -extern idVec4 colorLtGrey; -extern idVec4 colorMdGrey; -extern idVec4 colorDkGrey; - -#define Q_COLOR_ESCAPE '^' -#define Q_IsColorString(p) ( p && *(p) == Q_COLOR_ESCAPE && *((p)+1) && *((p)+1) != Q_COLOR_ESCAPE ) - -#define COLOR_BLACK '0' -#define COLOR_RED '1' -#define COLOR_GREEN '2' -#define COLOR_YELLOW '3' -#define COLOR_BLUE '4' -#define COLOR_CYAN '5' -#define COLOR_MAGENTA '6' -#define COLOR_WHITE '7' -#define ColorIndex(c) ( ( (c) - '0' ) & 7 ) - -#define S_COLOR_BLACK "^0" -#define S_COLOR_RED "^1" -#define S_COLOR_GREEN "^2" -#define S_COLOR_YELLOW "^3" -#define S_COLOR_BLUE "^4" -#define S_COLOR_CYAN "^5" -#define S_COLOR_MAGENTA "^6" -#define S_COLOR_WHITE "^7" - -extern idVec4 g_color_table[8]; - -#define MAKERGB( v, r, g, b ) v[0]=r;v[1]=g;v[2]=b -#define MAKERGBA( v, r, g, b, a ) v[0]=r;v[1]=g;v[2]=b;v[3]=a - -#define DEG2RAD( a ) ( ( (a) * M_PI ) / 180.0F ) -#define RAD2DEG( a ) ( ( (a) * 180.0f ) / M_PI ) +#define SCREEN_WIDTH 640 +#define SCREEN_HEIGHT 480 + +#define TINYCHAR_WIDTH ( SMALLCHAR_WIDTH ) +#define TINYCHAR_HEIGHT ( SMALLCHAR_HEIGHT / 2 ) + +#define SMALLCHAR_WIDTH 8 +#define SMALLCHAR_HEIGHT 16 + +#define BIGCHAR_WIDTH 16 +#define BIGCHAR_HEIGHT 16 + +#define GIANTCHAR_WIDTH 32 +#define GIANTCHAR_HEIGHT 48 + +extern idVec4 colorBlack; +extern idVec4 colorRed; +extern idVec4 colorGreen; +extern idVec4 colorBlue; +extern idVec4 colorYellow; +extern idVec4 colorMagenta; +extern idVec4 colorCyan; +extern idVec4 colorWhite; +extern idVec4 colorLtGrey; +extern idVec4 colorMdGrey; +extern idVec4 colorDkGrey; + +#define Q_COLOR_ESCAPE '^' +#define Q_IsColorString( p ) ( p && *( p ) == Q_COLOR_ESCAPE && *( ( p ) + 1 ) && *( ( p ) + 1 ) != Q_COLOR_ESCAPE ) + +#define COLOR_BLACK '0' +#define COLOR_RED '1' +#define COLOR_GREEN '2' +#define COLOR_YELLOW '3' +#define COLOR_BLUE '4' +#define COLOR_CYAN '5' +#define COLOR_MAGENTA '6' +#define COLOR_WHITE '7' +#define ColorIndex( c ) ( ( ( c ) - '0' ) & 7 ) + +#define S_COLOR_BLACK "^0" +#define S_COLOR_RED "^1" +#define S_COLOR_GREEN "^2" +#define S_COLOR_YELLOW "^3" +#define S_COLOR_BLUE "^4" +#define S_COLOR_CYAN "^5" +#define S_COLOR_MAGENTA "^6" +#define S_COLOR_WHITE "^7" + +extern idVec4 g_color_table[8]; + +#define MAKERGB( v, r, g, b ) v[0] = r; v[1] = g; v[2] = b +#define MAKERGBA( v, r, g, b, a ) v[0] = r; v[1] = g; v[2] = b; v[3] = a + +#define DEG2RAD( a ) ( ( ( a ) * M_PI ) / 180.0F ) +#define RAD2DEG( a ) ( ( ( a ) * 180.0f ) / M_PI ) struct cplane_s; -extern idVec3 vec3_origin; -extern idVec4 vec4_origin; -extern mat3_t axisDefault; +extern idVec3 vec3_origin; +extern idVec4 vec4_origin; +extern mat3_t axisDefault; -#define nanmask (255<<23) +#define nanmask ( 255 << 23 ) -#define IS_NAN(x) (((*(int *)&x)&nanmask)==nanmask) +#define IS_NAN( x ) ( ( ( *(int *)&x ) & nanmask ) == nanmask ) float Q_fabs( float f ); -float Q_rsqrt( float f ); // reciprocal square root +float Q_rsqrt( float f ); // reciprocal square root #define SQRTFAST( x ) ( 1.0f / Q_rsqrt( x ) ) @@ -432,30 +432,30 @@ signed short ClampShort( int i ); int DirToByte( const idVec3 &dir ); void ByteToDir( int b, vec3_p dir ); -#define DotProduct(a,b) ((a)[0]*(b)[0]+(a)[1]*(b)[1]+(a)[2]*(b)[2]) -#define VectorSubtract(a,b,c) ((c)[0]=(a)[0]-(b)[0],(c)[1]=(a)[1]-(b)[1],(c)[2]=(a)[2]-(b)[2]) -#define VectorAdd(a,b,c) ((c)[0]=(a)[0]+(b)[0],(c)[1]=(a)[1]+(b)[1],(c)[2]=(a)[2]+(b)[2]) -#define VectorCopy(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2]) +#define DotProduct( a,b ) ( ( a )[0] * ( b )[0] + ( a )[1] * ( b )[1] + ( a )[2] * ( b )[2] ) +#define VectorSubtract( a,b,c ) ( ( c )[0] = ( a )[0] - ( b )[0],( c )[1] = ( a )[1] - ( b )[1],( c )[2] = ( a )[2] - ( b )[2] ) +#define VectorAdd( a,b,c ) ( ( c )[0] = ( a )[0] + ( b )[0],( c )[1] = ( a )[1] + ( b )[1],( c )[2] = ( a )[2] + ( b )[2] ) +#define VectorCopy( a,b ) ( ( b )[0] = ( a )[0],( b )[1] = ( a )[1],( b )[2] = ( a )[2] ) //#define VectorCopy(a,b) ((b).x=(a).x,(b).y=(a).y,(b).z=(a).z]) -#define VectorScale(v, s, o) ((o)[0]=(v)[0]*(s),(o)[1]=(v)[1]*(s),(o)[2]=(v)[2]*(s)) -#define VectorMA(v, s, b, o) ((o)[0]=(v)[0]+(b)[0]*(s),(o)[1]=(v)[1]+(b)[1]*(s),(o)[2]=(v)[2]+(b)[2]*(s)) -#define CrossProduct(a,b,c) ((c)[0]=(a)[1]*(b)[2]-(a)[2]*(b)[1],(c)[1]=(a)[2]*(b)[0]-(a)[0]*(b)[2],(c)[2]=(a)[0]*(b)[1]-(a)[1]*(b)[0]) +#define VectorScale( v, s, o ) ( ( o )[0] = ( v )[0] * ( s ),( o )[1] = ( v )[1] * ( s ),( o )[2] = ( v )[2] * ( s ) ) +#define VectorMA( v, s, b, o ) ( ( o )[0] = ( v )[0] + ( b )[0] * ( s ),( o )[1] = ( v )[1] + ( b )[1] * ( s ),( o )[2] = ( v )[2] + ( b )[2] * ( s ) ) +#define CrossProduct( a,b,c ) ( ( c )[0] = ( a )[1] * ( b )[2] - ( a )[2] * ( b )[1],( c )[1] = ( a )[2] * ( b )[0] - ( a )[0] * ( b )[2],( c )[2] = ( a )[0] * ( b )[1] - ( a )[1] * ( b )[0] ) -#define DotProduct4(x,y) ((x)[0]*(y)[0]+(x)[1]*(y)[1]+(x)[2]*(y)[2]+(x)[3]*(y)[3]) -#define VectorSubtract4(a,b,c) ((c)[0]=(a)[0]-(b)[0],(c)[1]=(a)[1]-(b)[1],(c)[2]=(a)[2]-(b)[2],(c)[3]=(a)[3]-(b)[3]) -#define VectorAdd4(a,b,c) ((c)[0]=(a)[0]+(b)[0],(c)[1]=(a)[1]+(b)[1],(c)[2]=(a)[2]+(b)[2],(c)[3]=(a)[3]+(b)[3]) -#define VectorCopy4(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2],(b)[3]=(a)[3]) -#define VectorScale4(v, s, o) ((o)[0]=(v)[0]*(s),(o)[1]=(v)[1]*(s),(o)[2]=(v)[2]*(s),(o)[3]=(v)[3]*(s)) -#define VectorMA4(v, s, b, o) ((o)[0]=(v)[0]+(b)[0]*(s),(o)[1]=(v)[1]+(b)[1]*(s),(o)[2]=(v)[2]+(b)[2]*(s),(o)[3]=(v)[3]+(b)[3]*(s)) +#define DotProduct4( x,y ) ( ( x )[0] * ( y )[0] + ( x )[1] * ( y )[1] + ( x )[2] * ( y )[2] + ( x )[3] * ( y )[3] ) +#define VectorSubtract4( a,b,c ) ( ( c )[0] = ( a )[0] - ( b )[0],( c )[1] = ( a )[1] - ( b )[1],( c )[2] = ( a )[2] - ( b )[2],( c )[3] = ( a )[3] - ( b )[3] ) +#define VectorAdd4( a,b,c ) ( ( c )[0] = ( a )[0] + ( b )[0],( c )[1] = ( a )[1] + ( b )[1],( c )[2] = ( a )[2] + ( b )[2],( c )[3] = ( a )[3] + ( b )[3] ) +#define VectorCopy4( a,b ) ( ( b )[0] = ( a )[0],( b )[1] = ( a )[1],( b )[2] = ( a )[2],( b )[3] = ( a )[3] ) +#define VectorScale4( v, s, o ) ( ( o )[0] = ( v )[0] * ( s ),( o )[1] = ( v )[1] * ( s ),( o )[2] = ( v )[2] * ( s ),( o )[3] = ( v )[3] * ( s ) ) +#define VectorMA4( v, s, b, o ) ( ( o )[0] = ( v )[0] + ( b )[0] * ( s ),( o )[1] = ( v )[1] + ( b )[1] * ( s ),( o )[2] = ( v )[2] + ( b )[2] * ( s ),( o )[3] = ( v )[3] + ( b )[3] * ( s ) ) -#define VectorClear(a) ((a)[0]=(a)[1]=(a)[2]=0) -#define VectorNegate(a,b) ((b)[0]=-(a)[0],(b)[1]=-(a)[1],(b)[2]=-(a)[2]) -#define VectorSet(v, x, y, z) ((v)[0]=(x), (v)[1]=(y), (v)[2]=(z)) -#define Vector4Copy(a,b) ((b)[0]=(a)[0],(b)[1]=(a)[1],(b)[2]=(a)[2],(b)[3]=(a)[3]) +#define VectorClear( a ) ( ( a )[0] = ( a )[1] = ( a )[2] = 0 ) +#define VectorNegate( a,b ) ( ( b )[0] = -( a )[0],( b )[1] = -( a )[1],( b )[2] = -( a )[2] ) +#define VectorSet( v, x, y, z ) ( ( v )[0] = ( x ), ( v )[1] = ( y ), ( v )[2] = ( z ) ) +#define Vector4Copy( a,b ) ( ( b )[0] = ( a )[0],( b )[1] = ( a )[1],( b )[2] = ( a )[2],( b )[3] = ( a )[3] ) -#define SnapVector(v) {v[0]=(int)v[0];v[1]=(int)v[1];v[2]=(int)v[2];} +#define SnapVector( v ) {v[0] = (int)v[0]; v[1] = (int)v[1]; v[2] = (int)v[2]; } float NormalizeColor( vec3_c in, vec3_p out ); @@ -463,48 +463,48 @@ int VectorCompare( vec3_c v1, vec3_c v2 ); float VectorLength( vec3_c v ); float Distance( vec3_c p1, vec3_c p2 ); float DistanceSquared( vec3_c p1, vec3_c p2 ); -float VectorNormalize (vec3_p v); // returns vector length -void VectorNormalizeFast(vec3_p v); // does NOT return vector length, uses rsqrt approximation +float VectorNormalize( vec3_p v ); // returns vector length +void VectorNormalizeFast( vec3_p v ); // does NOT return vector length, uses rsqrt approximation float VectorNormalize2( vec3_c v, vec3_p out ); -void VectorInverse (vec3_p v); +void VectorInverse( vec3_p v ); void VectorRotate( vec3_c in, mat3_c matrix, vec3_p out ); -void VectorPolar(vec3_p v, float radius, float theta, float phi); -void VectorSnap(vec3_p v); -void Vector53Copy( const idVec5_t &in, vec3_p out); -void Vector5Scale( const idVec5_t &v, float scale, idVec5_t &out); -void Vector5Add( const idVec5_t &va, const idVec5_t &vb, idVec5_t &out); -void VectorRotate3( vec3_c vIn, vec3_c vRotation, vec3_p out); -void VectorRotate3Origin(vec3_c vIn, vec3_c vRotation, vec3_c vOrigin, vec3_p out); +void VectorPolar( vec3_p v, float radius, float theta, float phi ); +void VectorSnap( vec3_p v ); +void Vector53Copy( const idVec5_t &in, vec3_p out ); +void Vector5Scale( const idVec5_t &v, float scale, idVec5_t &out ); +void Vector5Add( const idVec5_t &va, const idVec5_t &vb, idVec5_t &out ); +void VectorRotate3( vec3_c vIn, vec3_c vRotation, vec3_p out ); +void VectorRotate3Origin( vec3_c vIn, vec3_c vRotation, vec3_c vOrigin, vec3_p out ); -int Q_log2(int val); +int Q_log2( int val ); -int Q_rand( int *seed ); -float Q_random( int *seed ); -float Q_crandom( int *seed ); +int Q_rand( int *seed ); +float Q_random( int *seed ); +float Q_crandom( int *seed ); -#define random() ((rand () & 0x7fff) / ((float)0x7fff)) -#define crandom() (2.0 * (random() - 0.5)) +#define random() ( ( rand() & 0x7fff ) / ( (float)0x7fff ) ) +#define crandom() ( 2.0 * ( random() - 0.5 ) ) float Q_rint( float in ); -void vectoangles( vec3_c value1, angles_p angles); +void vectoangles( vec3_c value1, angles_p angles ); void AnglesToAxis( angles_c angles, mat3_p axis ); void AxisCopy( mat3_c in, mat3_p out ); -qboolean AxisRotated( mat3_c in ); // assumes a non-degenerate axis +qboolean AxisRotated( mat3_c in ); // assumes a non-degenerate axis int SignbitsForNormal( vec3_c normal ); int BoxOnPlaneSide( const Bounds &b, struct cplane_s *p ); -float AngleMod(float a); -float LerpAngle (float from, float to, float frac); -float AngleSubtract( float a1, float a2 ); -void AnglesSubtract( angles_c v1, angles_c v2, angles_p v3 ); +float AngleMod( float a ); +float LerpAngle( float from, float to, float frac ); +float AngleSubtract( float a1, float a2 ); +void AnglesSubtract( angles_c v1, angles_c v2, angles_p v3 ); -float AngleNormalize360 ( float angle ); -float AngleNormalize180 ( float angle ); -float AngleDelta ( float angle1, float angle2 ); +float AngleNormalize360( float angle ); +float AngleNormalize180( float angle ); +float AngleDelta( float angle1, float angle2 ); qboolean PlaneFromPoints( idVec4 &plane, vec3_c a, vec3_c b, vec3_c c ); void ProjectPointOnPlane( vec3_p dst, vec3_c p, vec3_c normal ); @@ -513,42 +513,42 @@ void RotateAroundDirection( mat3_p axis, float yaw ); void MakeNormalVectors( vec3_c forward, vec3_p right, vec3_p up ); // perpendicular vector could be replaced by this -int PlaneTypeForNormal( vec3_c normal ); +int PlaneTypeForNormal( vec3_c normal ); void MatrixMultiply( mat3_c in1, mat3_c in2, mat3_p out ); -void MatrixInverseMultiply( mat3_c in1, mat3_c in2, mat3_p out ); // in2 is transposed during multiply +void MatrixInverseMultiply( mat3_c in1, mat3_c in2, mat3_p out ); // in2 is transposed during multiply void MatrixTransformVector( vec3_c in, mat3_c matrix, vec3_p out ); void MatrixProjectVector( vec3_c in, mat3_c matrix, vec3_p out ); // Places the vector into a new coordinate system. -void AngleVectors( angles_c angles, vec3_p forward, vec3_p right, vec3_p up); +void AngleVectors( angles_c angles, vec3_p forward, vec3_p right, vec3_p up ); void PerpendicularVector( vec3_p dst, vec3_c src ); float TriangleArea( vec3_c a, vec3_c b, vec3_c c ); -#endif // __cplusplus +#endif // __cplusplus //============================================= float Com_Clamp( float min, float max, float value ); -#define FILE_HASH_SIZE 1024 +#define FILE_HASH_SIZE 1024 int Com_HashString( const char *fname ); -char *Com_SkipPath( char *pathname ); +char *Com_SkipPath( char *pathname ); // it is ok for out == in -void Com_StripExtension( const char *in, char *out ); +void Com_StripExtension( const char *in, char *out ); // "extension" should include the dot: ".map" -void Com_DefaultExtension( char *path, int maxSize, const char *extension ); +void Com_DefaultExtension( char *path, int maxSize, const char *extension ); -int Com_ParseInfos( const char *buf, int max, char infos[][MAX_INFO_STRING] ); +int Com_ParseInfos( const char *buf, int max, char infos[][MAX_INFO_STRING] ); /* -===================================================================================== + ===================================================================================== -SCRIPT PARSING + SCRIPT PARSING -===================================================================================== -*/ + ===================================================================================== + */ // this just controls the comment printing, it doesn't actually load a file void Com_BeginParseSession( const char *filename ); @@ -561,37 +561,37 @@ int Com_GetCurrentParseLine( void ); // ParseOnLine will return empty if there isn't another token on this line // this funny typedef just means a moving pointer into a const char * buffer -const char *Com_Parse( const char *(*data_p) ); -const char *Com_ParseOnLine( const char *(*data_p) ); -const char *Com_ParseRestOfLine( const char *(*data_p) ); +const char *Com_Parse( const char *( *data_p ) ); +const char *Com_ParseOnLine( const char *( *data_p ) ); +const char *Com_ParseRestOfLine( const char *( *data_p ) ); void Com_UngetToken( void ); #ifdef __cplusplus -void Com_MatchToken( const char *(*buf_p), const char *match, qboolean warning = qfalse ); +void Com_MatchToken( const char *( *buf_p ), const char *match, qboolean warning = qfalse ); #else -void Com_MatchToken( const char *(*buf_p), const char *match, qboolean warning ); +void Com_MatchToken( const char *( *buf_p ), const char *match, qboolean warning ); #endif void Com_ScriptError( const char *msg, ... ); void Com_ScriptWarning( const char *msg, ... ); -void Com_SkipBracedSection( const char *(*program) ); -void Com_SkipRestOfLine( const char *(*data) ); +void Com_SkipBracedSection( const char *( *program ) ); +void Com_SkipRestOfLine( const char *( *data ) ); -float Com_ParseFloat( const char *(*buf_p) ); -int Com_ParseInt( const char *(*buf_p) ); +float Com_ParseFloat( const char *( *buf_p ) ); +int Com_ParseInt( const char *( *buf_p ) ); -void Com_Parse1DMatrix( const char *(*buf_p), int x, float *m ); -void Com_Parse2DMatrix( const char *(*buf_p), int y, int x, float *m ); -void Com_Parse3DMatrix( const char *(*buf_p), int z, int y, int x, float *m ); +void Com_Parse1DMatrix( const char *( *buf_p ), int x, float *m ); +void Com_Parse2DMatrix( const char *( *buf_p ), int y, int x, float *m ); +void Com_Parse3DMatrix( const char *( *buf_p ), int z, int y, int x, float *m ); //===================================================================================== #ifdef __cplusplus - extern "C" { +extern "C" { #endif -void QDECL Com_sprintf (char *dest, int size, const char *fmt, ...); +void QDECL Com_sprintf( char *dest, int size, const char *fmt, ... ); // mode parm for FS_FOpenFile @@ -616,40 +616,40 @@ int Q_isupper( int c ); int Q_isalpha( int c ); // portable case insensitive compare -int Q_stricmp (const char *s1, const char *s2); -int Q_strncmp (const char *s1, const char *s2, int n); -int Q_stricmpn (const char *s1, const char *s2, int n); -char *Q_strlwr( char *s1 ); -char *Q_strupr( char *s1 ); -char *Q_strrchr( const char* string, int c ); +int Q_stricmp( const char *s1, const char *s2 ); +int Q_strncmp( const char *s1, const char *s2, int n ); +int Q_stricmpn( const char *s1, const char *s2, int n ); +char *Q_strlwr( char *s1 ); +char *Q_strupr( char *s1 ); +char *Q_strrchr( const char* string, int c ); // buffer size safe library replacements -void Q_strncpyz( char *dest, const char *src, int destsize ); -void Q_strcat( char *dest, int size, const char *src ); +void Q_strncpyz( char *dest, const char *src, int destsize ); +void Q_strcat( char *dest, int size, const char *src ); // strlen that discounts Quake color sequences int Q_PrintStrlen( const char *string ); // removes color sequences from string char *Q_CleanStr( char *string ); -int Com_Filter( const char *filter, const char *name, int casesensitive ); +int Com_Filter( const char *filter, const char *name, int casesensitive ); const char *Com_StringContains( const char *str1, const char *str2, int casesensitive ); //============================================= -short BigShort(short l); -short LittleShort(short l); -int BigLong (int l); -int LittleLong (int l); -float BigFloat (float l); -float LittleFloat (float l); +short BigShort( short l ); +short LittleShort( short l ); +int BigLong( int l ); +int LittleLong( int l ); +float BigFloat( float l ); +float LittleFloat( float l ); -void Swap_Init (void); -char * QDECL va(char *format, ...); +void Swap_Init( void ); +char * QDECL va( char *format, ... ); #ifdef __cplusplus - } +} #endif @@ -659,58 +659,58 @@ char * QDECL va(char *format, ...); // mapfile parsing // typedef struct ePair_s { - char *key; - char *value; + char *key; + char *value; } ePair_t; typedef struct mapSide_s { - char material[MAX_QPATH]; - idVec4 plane; - idVec4 textureVectors[2]; + char material[MAX_QPATH]; + idVec4 plane; + idVec4 textureVectors[2]; } mapSide_t; typedef struct { - int numSides; - mapSide_t **sides; + int numSides; + mapSide_t **sides; } mapBrush_t; typedef struct { - idVec3 xyz; - float st[2]; + idVec3 xyz; + float st[2]; } patchVertex_t; typedef struct { - char material[MAX_QPATH]; - int width, height; - patchVertex_t *patchVerts; + char material[MAX_QPATH]; + int width, height; + patchVertex_t *patchVerts; } mapPatch_t; typedef struct { - char modelName[MAX_QPATH]; - float matrix[16]; + char modelName[MAX_QPATH]; + float matrix[16]; } mapModel_t; typedef struct mapPrimitive_s { - int numEpairs; - ePair_t **ePairs; + int numEpairs; + ePair_t **ePairs; // only one of these will be non-NULL - mapBrush_t *brush; - mapPatch_t *patch; - mapModel_t *model; + mapBrush_t *brush; + mapPatch_t *patch; + mapModel_t *model; } mapPrimitive_t; typedef struct mapEntity_s { - int numPrimitives; - mapPrimitive_t **primitives; + int numPrimitives; + mapPrimitive_t **primitives; - int numEpairs; - ePair_t **ePairs; + int numEpairs; + ePair_t **ePairs; } mapEntity_t; typedef struct { - int numEntities; - mapEntity_t **entities; + int numEntities; + mapEntity_t **entities; } mapFile_t; @@ -721,56 +721,56 @@ void FreeMapFile( mapFile_t *mapFile ); void WriteMapFile( const mapFile_t *mapFile, FILE *f ); // key names are case-insensitive -const char *ValueForMapEntityKey( const mapEntity_t *ent, const char *key ); -float FloatForMapEntityKey( const mapEntity_t *ent, const char *key ); -qboolean GetVectorForMapEntityKey( const mapEntity_t *ent, const char *key, idVec3 &vec ); +const char *ValueForMapEntityKey( const mapEntity_t *ent, const char *key ); +float FloatForMapEntityKey( const mapEntity_t *ent, const char *key ); +qboolean GetVectorForMapEntityKey( const mapEntity_t *ent, const char *key, idVec3 &vec ); typedef struct { - idVec3 xyz; - idVec2 st; - idVec3 normal; - idVec3 tangents[2]; - byte smoothing[4]; // colors for silhouette smoothing + idVec3 xyz; + idVec2 st; + idVec3 normal; + idVec3 tangents[2]; + byte smoothing[4]; // colors for silhouette smoothing } drawVert_t; typedef struct { - int width, height; - drawVert_t *verts; + int width, height; + drawVert_t *verts; } drawVertMesh_t; // Tesselate a map patch into smoothed, drawable vertexes // MaxError of around 4 is reasonable drawVertMesh_t *SubdivideMapPatch( const mapPatch_t *patch, float maxError ); -#endif // __cplusplus +#endif // __cplusplus //========================================= #ifdef __cplusplus - extern "C" { +extern "C" { #endif -void QDECL Com_Error( int level, const char *error, ... ); -void QDECL Com_Printf( const char *msg, ... ); -void QDECL Com_DPrintf( const char *msg, ... ); +void QDECL Com_Error( int level, const char *error, ... ); +void QDECL Com_Printf( const char *msg, ... ); +void QDECL Com_DPrintf( const char *msg, ... ); #ifdef __cplusplus - } +} #endif typedef struct { - qboolean frameMemory; - int currentElements; - int maxElements; // will reallocate and move when exceeded - void **elements; + qboolean frameMemory; + int currentElements; + int maxElements; // will reallocate and move when exceeded + void **elements; } growList_t; // you don't need to init the growlist if you don't mind it growing and moving // the list as it expands -void Com_InitGrowList( growList_t *list, int maxElements ); -int Com_AddToGrowList( growList_t *list, void *data ); -void *Com_GrowListElement( const growList_t *list, int index ); -int Com_IndexForGrowListElement( const growList_t *list, const void *element ); +void Com_InitGrowList( growList_t *list, int maxElements ); +int Com_AddToGrowList( growList_t *list, void *data ); +void *Com_GrowListElement( const growList_t *list, int index ); +int Com_IndexForGrowListElement( const growList_t *list, const void *element ); // @@ -780,7 +780,7 @@ char *Info_ValueForKey( const char *s, const char *key ); void Info_RemoveKey( char *s, const char *key ); void Info_SetValueForKey( char *s, const char *key, const char *value ); qboolean Info_Validate( const char *s ); -void Info_NextPair( const char *(*s), char key[MAX_INFO_KEY], char value[MAX_INFO_VALUE] ); +void Info_NextPair( const char *( *s ), char key[MAX_INFO_KEY], char value[MAX_INFO_VALUE] ); // get cvar defs, collision defs, etc //#include "../shared/interface.h" @@ -794,7 +794,6 @@ void Info_NextPair( const char *(*s), char key[MAX_INFO_KEY], char value[MAX_INF // get the flags class //#include "../shared/idflags.h" -#endif // __cplusplus - -#endif // __Q_SHARED_H +#endif // __cplusplus +#endif // __Q_SHARED_H