#ifndef __PRECOMPILED_H__ #define __PRECOMPILED_H__ #ifdef __cplusplus // RAVEN BEGIN // nrausch: conditional cvar archive flag so that the pc build will archive certain cvars #ifdef _XENON #undef _WINDOWS #define PC_CVAR_ARCHIVE CVAR_NOCHEAT //so it doesn't clobber #else #define PC_CVAR_ARCHIVE CVAR_ARCHIVE #endif // RAVEN END class ThreadedAlloc; // class that is only used to expand the AutoCrit template to tag allocs/frees called from inside the R_AddModelSurfaces call graph //----------------------------------------------------- // RAVEN BEGIN // jscott: set up conditional compiles #ifdef _DEBUG_MEMORY #define ID_REDIRECT_NEWDELETE // Doesn't work with Radiant #define ID_DEBUG_MEMORY #endif #if defined( _FINAL ) && !defined( _MPBETA ) #define ID_CONSOLE_LOCK #endif #ifdef _WINDOWS // _WIN32 always defined // _WIN64 also defined for x64 target #if !defined( _WIN64 ) #define ID_WIN_X86_ASM #define ID_WIN_X86_MMX #define ID_WIN_X86_SSE //#define ID_WIN_X86_SSE2 #endif // we should never rely on this define in our code. this is here so dodgy external libraries don't get confused #ifndef WIN32 #define WIN32 #endif #undef _XBOX #undef _CONSOLE // Used to comment out code that can't be used on a console #define _OPENGL #define _LITTLE_ENDIAN #undef _CASE_SENSITIVE_FILESYSTEM #define _USE_OPENAL #define _USE_VOICECHAT #define __WITH_PB__ //#define _RV_MEM_SYS_SUPPORT // when using the PC to make Xenon builds, enable _MD5R_SUPPORT / _MD5R_WRITE_SUPPORT and run with fs_game q4baseXenon #ifdef Q4SDK // the SDK can't be compiled with _MD5R_SUPPORT, but since the PC version is we need to maintain ABI // to make things worse, only the windows version was compiled with _MD5R enabled, the Linux and Mac builds didn't #define Q4SDK_MD5R #else // Q4SDK #define _MD5R_SUPPORT #define _MD5R_WRITE_SUPPORT #endif // !Q4SDK #define _GLVAS_SUPPPORT //#define RV_BINARYDECLS #define RV_SINGLE_DECL_FILE // this can't be used with _RV_MEM_SYS_SUPPORT and actually shouldn't be used at all on the Xenon at present #if !defined(_RV_MEM_SYS_SUPPORT) && !defined(ID_REDIRECT_NEWDELETE) #define RV_UNIFIED_ALLOCATOR #endif // SMP support for running the backend on a 2nd thread #define ENABLE_INTEL_SMP // Enables the batching of vertex cache request in SMP mode. // Note (TTimo): is tied to ENABLE_INTEL_SMP #define ENABLE_INTEL_VERTEXCACHE_OPT // Empty define for Xbox 360 compatibility #define RESTRICT #define TIME_THIS_SCOPE(x) #define NEWLINE "\r\n" #pragma warning( disable : 4100 ) // unreferenced formal parameter #pragma warning( disable : 4127 ) // conditional expression is constant #pragma warning( disable : 4201 ) // non standard extension nameless struct or union #pragma warning( disable : 4244 ) // conversion to smaller type, possible loss of data #pragma warning( disable : 4245 ) // signed/unsigned mismatch #pragma warning( disable : 4389 ) // signed/unsigned mismatch #pragma warning( disable : 4714 ) // function marked as __forceinline not inlined #pragma warning( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning) class AlignmentChecker { public: static void UpdateCount(void const * const ptr) {} static void ClearCount() {} static void Print() {} }; #endif // _WINDOWS #ifdef __linux__ // for offsetof #include // FLT_MAX and such #include #include #define __WITH_PB__ #undef WIN32 #undef _XBOX #undef _CONSOLE #define _OPENGL #define _LITTLE_ENDIAN #define _CASE_SENSITIVE_FILESYSTEM #define NEWLINE "\n" #define _GLVAS_SUPPPORT class AlignmentChecker { public: static void UpdateCount(void const * const ptr) {} static void ClearCount() {} static void Print() {} }; #define RESTRICT #define TIME_THIS_SCOPE(x) // we release both a non-SMP and an SMP binary for Linux #ifdef ENABLE_INTEL_SMP // Enables the batching of vertex cache request in SMP mode. // Note (TTimo): is tied to ENABLE_INTEL_SMP #define ENABLE_INTEL_VERTEXCACHE_OPT #endif #endif #ifdef MACOS_X // for offsetof #include #include // for square root estimate instruction #include #include // for FLT_MIN // SMP support for running the backend on a 2nd thread #ifndef ENABLE_INTEL_SMP #define ENABLE_INTEL_SMP #endif // Enables the batching of vertex cache request in SMP mode. // Note (TTimo): is tied to ENABLE_INTEL_SMP #define ENABLE_INTEL_VERTEXCACHE_OPT #define __WITH_PB__ #undef WIN32 #undef _XBOX #undef _CONSOLE #define _OPENGL #ifdef __ppc__ #undef _LITTLE_ENDIAN #else #define _LITTLE_ENDIAN #endif #define _CASE_SENSITIVE_FILESYSTEM #define _USE_OPENAL #define ID_INLINE inline #define NEWLINE "\n" #define _GLVAS_SUPPPORT class AlignmentChecker { public: static void UpdateCount(void const * const ptr) {} static void ClearCount() {} static void Print() {} }; #define RESTRICT #define TIME_THIS_SCOPE(x) #endif #ifdef _WINDOWS #ifndef Q4SDK #if !defined( GAME_DLL ) && !defined( GAME_MONO ) #define _WIN32_WINNT 0x501 #define WINVER 0x501 #ifdef ID_DEDICATED // dedicated sets windows version here #define WIN32_LEAN_AND_MEAN #else #ifdef TOOL_DLL // non-dedicated includes MFC and sets windows verion here #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // prevent auto literal to string conversion #include "../tools/comafx/StdAfx.h" #endif // TOOL_DLL #endif // ID_DEDICATED #include #include #include #define DIRECTINPUT_VERSION 0x0700 #define DIRECTSOUND_VERSION 0x0800 #include "../mssdk/include/dsound.h" #include "../mssdk/include/dinput.h" #include "../mssdk/include/dxerr8.h" #endif // GAME_DLL #endif // !Q4SDK #include // no malloc.h on mac or unix #include // for qgl.h // RAVEN BEGIN // bdube: for dual monitor support in tools #ifndef GET_X_LPARAM #define GET_X_LPARAM(lParam) ((int)(short)LOWORD(lParam)) #endif #ifndef GET_Y_LPARAM #define GET_Y_LPARAM(lParam) ((int)(short)HIWORD(lParam)) #endif // RAVEN END #undef FindText // stupid namespace poluting Microsoft monkeys #endif // _WINDOWS //----------------------------------------------------- #if !defined( _DEBUG ) && !defined( NDEBUG ) // don't generate asserts #define NDEBUG #endif #include #include #include #include #include #include #include #include #include #include //----------------------------------------------------- // non-portable system services #include "../sys/sys_public.h" // id lib #include "../idlib/Lib.h" #if !defined( Q4SDK ) && defined( __WITH_PB__ ) #include "../punkbuster/pbcommon.h" #endif // RAVEN BEGIN // jsinger: added to allow support for serialization/deserialization of binary decls #ifdef RV_BINARYDECLS // jsinger: Serializable class support #include "../serialization/Serializable.h" #endif // RAVEN END // framework #include "../framework/BuildVersion.h" #include "../framework/BuildDefines.h" #include "../framework/licensee.h" #include "../framework/CmdSystem.h" #include "../framework/CVarSystem.h" #include "../framework/Common.h" #include "../framework/File.h" #include "../framework/FileSystem.h" #include "../framework/UsercmdGen.h" // decls #include "../framework/declManager.h" #include "../framework/declTable.h" #include "../framework/declSkin.h" #include "../framework/declEntityDef.h" // RAVEN BEGIN // jscott: not using //#include "../framework/DeclFX.h" //#include "../framework/DeclParticle.h" // RAVEN END #include "../framework/declAF.h" #include "../framework/DeclPDA.h" #include "../framework/DeclPlayerModel.h" // RAVEN BEGIN // jscott: new decl types #include "../framework/declMatType.h" #include "../framework/declLipSync.h" #include "../framework/declPlayback.h" // RAVEN END // We have expression parsing and evaluation code in multiple places: // materials, sound shaders, and guis. We should unify them. const int MAX_EXPRESSION_OPS = 4096; const int MAX_EXPRESSION_REGISTERS = 4096; // Sanity check for any axis in bounds const float MAX_BOUND_SIZE = 65536.0f; // renderer #include "../renderer/qgl.h" #include "../renderer/Cinematic.h" #include "../renderer/Material.h" #include "../renderer/Model.h" #include "../renderer/ModelManager.h" #include "../renderer/RenderSystem.h" #include "../renderer/RenderWorld.h" // sound engine #include "../sound/sound.h" // RAVEN BEGIN // jscott: Effects system interface #include "../bse/BSEInterface.h" // RAVEN END // asynchronous networking #include "../framework/async/NetworkSystem.h" // user interfaces #include "../ui/ListGUI.h" #include "../ui/UserInterface.h" // collision detection system #include "../cm/CollisionModel.h" // AAS files and manager #include "../aas/AASFile.h" #include "../aas/AASFileManager.h" // game #include "../game/Game.h" //----------------------------------------------------- #if defined( Q4SDK ) || defined( GAME_DLL ) || defined( GAME_MONO ) #ifdef GAME_MPAPI #include "../mpgame/Game_local.h" #else #include "../game/Game_local.h" #endif #else #include "../framework/DemoChecksum.h" // framework #include "../framework/Compressor.h" #include "../framework/EventLoop.h" #include "../framework/KeyInput.h" #include "../framework/EditField.h" #include "../framework/Console.h" #include "../framework/DemoFile.h" #include "../framework/Session.h" // asynchronous networking #include "../framework/async/AsyncNetwork.h" // RAVEN BEGIN #include "../tools/Tools.h" // RAVEN END #endif /* !GAME_DLL */ // RAVEN BEGIN // jsinger: add AutoPtr and text-to-binary compiler support #include "AutoPtr.h" #include "LexerFactory.h" #include "TextCompiler.h" // jsinger: AutoCrit.h contains classes which aid in code synchronization // AutoAcquire.h contains a class that aids in thread acquisition of the direct3D device for xenon // Both compile out completely if the #define's above are not present #include "threads/AutoCrit.h" // RAVEN END //----------------------------------------------------- #endif /* __cplusplus */ #endif /* !__PRECOMPILED_H__ */