-//! Define _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ if you want to use DirectInput for joystick handling.\r
-/** This only applies to Windows devices, currently only supported under Win32 device.\r
-If not defined, Windows Multimedia library is used, which offers also broad support for joystick devices. */\r
-#define _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_\r
-#ifdef NO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_\r
-#undef _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_\r
-#endif\r
-// can't get this to compile currently under borland, can be removed if someone has a better solution\r
-#if defined(__BORLANDC__)\r
-#undef _IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_\r
-#endif\r
-\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_OPENGL_ to compile the Irrlicht engine with OpenGL.\r
-/** If you do not wish the engine to be compiled with OpenGL, comment this\r
-define out. */\r
-#define _IRR_COMPILE_WITH_OPENGL_\r
-#ifdef NO_IRR_COMPILE_WITH_OPENGL_\r
-#undef _IRR_COMPILE_WITH_OPENGL_\r
-#endif\r
-\r
-//! Define required options for OpenGL drivers.\r
-#if defined(_IRR_COMPILE_WITH_OPENGL_)\r
- #if defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_)\r
- #define _IRR_OPENGL_USE_EXTPOINTER_\r
- #define _IRR_COMPILE_WITH_WGL_MANAGER_\r
- #elif defined(_IRR_COMPILE_WITH_X11_DEVICE_)\r
- #define _IRR_OPENGL_USE_EXTPOINTER_\r
- #define _IRR_COMPILE_WITH_GLX_MANAGER_\r
- #elif defined(_IRR_COMPILE_WITH_OSX_DEVICE_)\r
- #define _IRR_COMPILE_WITH_NSOGL_MANAGER_\r
- #elif defined(_IRR_SOLARIS_PLATFORM_)\r
- #define _IRR_COMPILE_WITH_GLX_MANAGER_\r
- #elif defined(_IRR_COMPILE_WITH_SDL_DEVICE_)\r
- #define _IRR_OPENGL_USE_EXTPOINTER_\r
- #endif\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_OGLES1_ to compile the Irrlicht engine with OpenGL ES 1.1.\r
-/** If you do not wish the engine to be compiled with OpenGL ES 1.1, comment this\r
-define out.\r
-Depending on platform you may have to enable _IRR_OGLES1_USE_KHRONOS_API_HEADERS_ as well when using it.\r
-*/\r
-#if defined(_IRR_ANDROID_PLATFORM_) || defined(_IRR_IOS_PLATFORM_)\r
-#define _IRR_COMPILE_WITH_OGLES1_\r
-#endif\r
-#ifdef NO_IRR_COMPILE_WITH_OGLES1_\r
-#undef _IRR_COMPILE_WITH_OGLES1_\r
-#endif\r
-\r
-#ifdef _IRR_COMPILE_WITH_OGLES1_\r
-//! Define _IRR_OGLES1_USE_KHRONOS_API_HEADERS_ to use the OpenGL ES headers from the Debian Khronos-api package\r
-//#define _IRR_OGLES1_USE_KHRONOS_API_HEADERS_\r
-#endif\r
-\r
-//! Define required options for OpenGL ES 1.1 drivers.\r
-#if defined(_IRR_COMPILE_WITH_OGLES1_)\r
-#if defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) || defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_)\r
-#define _IRR_OGLES1_USE_EXTPOINTER_\r
-#ifndef _IRR_COMPILE_WITH_EGL_MANAGER_\r
-#define _IRR_COMPILE_WITH_EGL_MANAGER_\r
-#endif\r
-#elif defined(_IRR_COMPILE_WITH_IOS_DEVICE_)\r
-#ifndef _IRR_COMPILE_WITH_EAGL_MANAGER_\r
-#define _IRR_COMPILE_WITH_EAGL_MANAGER_\r
-#endif\r
-#endif\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_OGLES2_ to compile the Irrlicht engine with OpenGL ES 2.0.\r
-/** If you do not wish the engine to be compiled with OpenGL ES 2.0, comment this\r
-define out. */\r
-#if defined(_IRR_ANDROID_PLATFORM_) || defined(_IRR_IOS_PLATFORM_)\r
-#define _IRR_COMPILE_WITH_OGLES2_\r
-#else\r
-//#define _IRR_COMPILE_WITH_OGLES2_\r
-#endif\r
-#ifdef NO_IRR_COMPILE_WITH_OGLES2_\r
-#undef _IRR_COMPILE_WITH_OGLES2_\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_WEBGL1_ to compile Irrlicht engine with a WebGL friendly\r
-//! subset of the OpenGL ES 2.0 driver.\r
-//#define _IRR_COMPILE_WITH_WEBGL1_\r
-#ifdef NO_IRR_COMPILE_WITH_WEBGL1_\r
-#undef _IRR_COMPILE_WITH_WEBGL1_\r
-#endif\r
-#ifdef _IRR_COMPILE_WITH_WEBGL1_\r
-#define _IRR_COMPILE_WITH_OGLES2_ // it's a subset of OGL ES2, so always needed when using WebGL\r
-#endif\r
-\r
-//! Define required options for OpenGL ES 2.0 drivers.\r
-#if defined(_IRR_COMPILE_WITH_OGLES2_)\r
-#if defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) || defined(_IRR_COMPILE_WITH_X11_DEVICE_) || defined(_IRR_COMPILE_WITH_ANDROID_DEVICE_) || defined(__EMSCRIPTEN__)\r
-#define _IRR_OGLES2_USE_EXTPOINTER_\r
-#ifndef _IRR_COMPILE_WITH_EGL_MANAGER_\r
-#define _IRR_COMPILE_WITH_EGL_MANAGER_\r
-#endif\r
-#elif defined(_IRR_COMPILE_WITH_IOS_DEVICE_)\r
-#ifndef _IRR_COMPILE_WITH_EAGL_MANAGER_\r
-#define _IRR_COMPILE_WITH_EAGL_MANAGER_\r
-#endif\r
-#endif\r
-#endif\r
-\r
-\r
-\r
-//! Define _IRR_COMPILE_WITH_X11_ to compile the Irrlicht engine with X11 support.\r
-/** If you do not wish the engine to be compiled with X11, comment this\r
-define out. */\r
-// Only used in LinuxDevice.\r
-#define _IRR_COMPILE_WITH_X11_\r
-#ifdef NO_IRR_COMPILE_WITH_X11_\r
-#undef _IRR_COMPILE_WITH_X11_\r
-#endif\r
-\r
-//! On some Linux systems the XF86 vidmode extension, X11 RandR, or XInput2 are missing.\r
-//! Use these defines to add/remove support for those dependencies as needed.\r
-//! XInput2 (library called Xi) is currently only used to support touch-input.\r
-#if defined(_IRR_LINUX_PLATFORM_) && defined(_IRR_COMPILE_WITH_X11_)\r
-#define _IRR_LINUX_X11_VIDMODE_\r
-//#define _IRR_LINUX_X11_RANDR_\r
-//#define _IRR_LINUX_X11_XINPUT2_\r
-#ifdef NO_IRR_LINUX_X11_VIDMODE_\r
-#undef _IRR_LINUX_X11_VIDMODE_\r
-#endif\r
-#ifdef NO_IRR_LINUX_X11_RANDR_\r
-#undef _IRR_LINUX_X11_RANDR_\r
-#endif\r
-#ifdef NO_IRR_LINUX_X11_XINPUT2_\r
-#undef _IRR_LINUX_X11_XINPUT2_\r
-#endif\r
-\r
-//! X11 has by default only monochrome cursors, but using the Xcursor library we can also get color cursor support.\r
-//! If you have the need for custom color cursors on X11 then enable this and make sure you also link\r
-//! to the Xcursor library in your Makefile/Projectfile.\r
-//#define _IRR_LINUX_XCURSOR_\r
-#ifdef NO_IRR_LINUX_XCURSOR_\r
-#undef _IRR_LINUX_XCURSOR_\r
-#endif\r
-\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_GUI_ to compile the engine with the built-in GUI\r
-/** Disable this if you are using an external library to draw the GUI. If you disable this then\r
-you will not be able to use anything provided by the GUI Environment, including loading fonts. */\r
-#define _IRR_COMPILE_WITH_GUI_\r
-#ifdef NO_IRR_COMPILE_WITH_GUI_\r
-#undef _IRR_COMPILE_WITH_GUI_\r
-#endif\r
-\r
-//! Define _IRR_WCHAR_FILESYSTEM to enable unicode filesystem support for the engine.\r
-/** This enables the engine to read/write from unicode filesystem. If you\r
-disable this feature, the engine behave as before (ansi). This is currently only supported\r
-for Windows based systems. You also have to set #define UNICODE for this to compile.\r
-*/\r
-//#define _IRR_WCHAR_FILESYSTEM\r
-#ifdef NO_IRR_WCHAR_FILESYSTEM\r
-#undef _IRR_WCHAR_FILESYSTEM\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_JPEGLIB_ to enable compiling the engine using libjpeg.\r
-/** This enables the engine to read jpeg images. If you comment this out,\r
-the engine will no longer read .jpeg images. */\r
-#define _IRR_COMPILE_WITH_LIBJPEG_\r
-#ifdef NO_IRR_COMPILE_WITH_LIBJPEG_\r
-#undef _IRR_COMPILE_WITH_LIBJPEG_\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_LIBPNG_ to enable compiling the engine using libpng.\r
-/** This enables the engine to read png images. If you comment this out,\r
-the engine will no longer read .png images. */\r
-#define _IRR_COMPILE_WITH_LIBPNG_\r
-#ifdef NO_IRR_COMPILE_WITH_LIBPNG_\r
-#undef _IRR_COMPILE_WITH_LIBPNG_\r
-#endif\r
-\r
-//! Define _IRR_D3D_NO_SHADER_DEBUGGING to disable shader debugging in D3D9\r
-/** If _IRR_D3D_NO_SHADER_DEBUGGING is undefined in IrrCompileConfig.h,\r
-it is possible to debug all D3D9 shaders in VisualStudio. All shaders\r
-(which have been generated in memory or read from archives for example) will be emitted\r
-into a temporary file at runtime for this purpose. To debug your shaders, choose\r
-Debug->Direct3D->StartWithDirect3DDebugging in Visual Studio, and for every shader a\r
-file named 'irr_dbg_shader_%%.vsh' or 'irr_dbg_shader_%%.psh' will be created. Drag'n'drop\r
-the file you want to debug into visual studio. That's it. You can now set breakpoints and\r
-watch registers, variables etc. This works with ASM, HLSL, and both with pixel and vertex shaders.\r
-Note that the engine will run in D3D REF for this, which is a lot slower than HAL. */\r
-#define _IRR_D3D_NO_SHADER_DEBUGGING\r
-#ifdef NO_IRR_D3D_NO_SHADER_DEBUGGING\r
-#undef _IRR_D3D_NO_SHADER_DEBUGGING\r
-#endif\r
-\r
-//! Define _IRR_D3D_USE_LEGACY_HLSL_COMPILER to enable the old HLSL compiler in recent DX SDKs\r
-/** This enables support for ps_1_x shaders for recent DX SDKs. Otherwise, support\r
-for this shader model is not available anymore in SDKs after Oct2006. You need to\r
-distribute the OCT2006_d3dx9_31_x86.cab or OCT2006_d3dx9_31_x64.cab though, in order\r
-to provide the user with the proper DLL. That's why it's disabled by default. */\r
-//#define _IRR_D3D_USE_LEGACY_HLSL_COMPILER\r
-#ifdef NO_IRR_D3D_USE_LEGACY_HLSL_COMPILER\r
-#undef _IRR_D3D_USE_LEGACY_HLSL_COMPILER\r
-#endif\r
-\r
-//! Define _IRR_USE_NVIDIA_PERFHUD_ to opt-in to using the nVidia PerHUD tool\r
-/** Enable, by opting-in, to use the nVidia PerfHUD performance analysis driver\r
-tool <http://developer.nvidia.com/object/nvperfhud_home.html>. */\r
-#undef _IRR_USE_NVIDIA_PERFHUD_\r
-\r
-//! Define one of the three setting for Burning's Video Software Rasterizer\r
-/** So if we were marketing guys we could say Irrlicht has 4 Software-Rasterizers.\r
- In a Nutshell:\r
- All Burnings Rasterizers use 32 Bit Backbuffer, 32Bit Texture & 32 Bit Z or WBuffer,\r
- 16 Bit/32 Bit can be adjusted on a global flag.\r
-\r
- BURNINGVIDEO_RENDERER_BEAUTIFUL\r
- 32 Bit + Vertexcolor + Lighting + Per Pixel Perspective Correct + SubPixel/SubTexel Correct +\r
- Bilinear Texturefiltering + WBuffer\r
-\r
- BURNINGVIDEO_RENDERER_FAST\r
- 32 Bit + Per Pixel Perspective Correct + SubPixel/SubTexel Correct + WBuffer +\r
- Bilinear Dithering TextureFiltering + WBuffer\r
-\r
- BURNINGVIDEO_RENDERER_ULTRA_FAST\r
- 16Bit + SubPixel/SubTexel Correct + ZBuffer\r
-*/\r
-\r
-//! Uncomment the following line if you want to ignore the deprecated warnings\r
-//#define IGNORE_DEPRECATED_WARNING\r
-\r
-//! Define _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_ if you want to use bone based\r
-/** animated meshes. If you compile without this, you will be unable to load\r
-B3D, MS3D or X meshes */\r
-#define _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_\r
-#ifdef NO_IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_\r
-#undef _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_\r
-#endif\r
-\r
-#ifdef _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_\r
-//! Define _IRR_COMPILE_WITH_B3D_LOADER_ if you want to use Blitz3D files\r
-#define _IRR_COMPILE_WITH_B3D_LOADER_\r
-#ifdef NO_IRR_COMPILE_WITH_B3D_LOADER_\r
-#undef _IRR_COMPILE_WITH_B3D_LOADER_\r
-#endif\r
-//! Define _IRR_COMPILE_WITH_X_LOADER_ if you want to use Microsoft X files\r
-#define _IRR_COMPILE_WITH_X_LOADER_\r
-#ifdef NO_IRR_COMPILE_WITH_X_LOADER_\r
-#undef _IRR_COMPILE_WITH_X_LOADER_\r
-#endif\r
-#endif // _IRR_COMPILE_WITH_SKINNED_MESH_SUPPORT_\r
-\r
-//! Define _IRR_COMPILE_WITH_OBJ_LOADER_ if you want to load Wavefront OBJ files\r
-#define _IRR_COMPILE_WITH_OBJ_LOADER_\r
-#ifdef NO_IRR_COMPILE_WITH_OBJ_LOADER_\r
-#undef _IRR_COMPILE_WITH_OBJ_LOADER_\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_BMP_LOADER_ if you want to load .bmp files\r
-//! Disabling this loader will also disable the built-in font\r
-#define _IRR_COMPILE_WITH_BMP_LOADER_\r
-#ifdef NO_IRR_COMPILE_WITH_BMP_LOADER_\r
-#undef _IRR_COMPILE_WITH_BMP_LOADER_\r
-#endif\r
-//! Define _IRR_COMPILE_WITH_JPG_LOADER_ if you want to load .jpg files\r
-#define _IRR_COMPILE_WITH_JPG_LOADER_\r
-#ifdef NO_IRR_COMPILE_WITH_JPG_LOADER_\r
-#undef _IRR_COMPILE_WITH_JPG_LOADER_\r
-#endif\r
-//! Define _IRR_COMPILE_WITH_PNG_LOADER_ if you want to load .png files\r
-#define _IRR_COMPILE_WITH_PNG_LOADER_\r
-#ifdef NO_IRR_COMPILE_WITH_PNG_LOADER_\r
-#undef _IRR_COMPILE_WITH_PNG_LOADER_\r
-#endif\r
-\r
-//! Define _IRR_COMPILE_WITH_JPG_WRITER_ if you want to write .jpg files\r
-#define _IRR_COMPILE_WITH_JPG_WRITER_\r
-#ifdef NO_IRR_COMPILE_WITH_JPG_WRITER_\r
-#undef _IRR_COMPILE_WITH_JPG_WRITER_\r
-#endif\r
-//! Define _IRR_COMPILE_WITH_PNG_WRITER_ if you want to write .png files\r
-#define _IRR_COMPILE_WITH_PNG_WRITER_\r
-#ifdef NO_IRR_COMPILE_WITH_PNG_WRITER_\r
-#undef _IRR_COMPILE_WITH_PNG_WRITER_\r
-#endif\r
-\r
-//! Define __IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_ if you want to open ZIP and GZIP archives\r
-/** ZIP reading has several more options below to configure. */\r
-#define __IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_\r
-#ifdef NO__IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_\r
-#undef __IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_\r
-#endif\r
-#ifdef __IRR_COMPILE_WITH_ZIP_ARCHIVE_LOADER_\r
-//! Define _IRR_COMPILE_WITH_ZLIB_ to enable compiling the engine using zlib.\r
-/** This enables the engine to read from compressed .zip archives. If you\r
-disable this feature, the engine can still read archives, but only uncompressed\r
-ones. */\r
-#define _IRR_COMPILE_WITH_ZLIB_\r
-#ifdef NO_IRR_COMPILE_WITH_ZLIB_\r
-#undef _IRR_COMPILE_WITH_ZLIB_\r
-#endif\r
-#endif\r
-\r
-//! Define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_ if you want to mount folders as archives\r
-#define __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_\r
-#ifdef NO__IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_\r
-#undef __IRR_COMPILE_WITH_MOUNT_ARCHIVE_LOADER_\r
-#endif\r
-\r
-// Some cleanup and standard stuff\r
-\r
-#ifdef _IRR_WINDOWS_API_\r
-\r
-// To build Irrlicht as a static library, you must define _IRR_STATIC_LIB_ in both the\r
-// Irrlicht build, *and* in the user application, before #including <irrlicht.h>\r
-#ifndef _IRR_STATIC_LIB_\r
-#ifdef IRRLICHT_EXPORTS\r
-#define IRRLICHT_API __declspec(dllexport)\r
-#else\r
-#define IRRLICHT_API __declspec(dllimport)\r
-#endif // IRRLICHT_EXPORT\r
-#else\r
-#define IRRLICHT_API\r
-#endif // _IRR_STATIC_LIB_\r
-\r
-// Declare the calling convention.\r
-#if defined(_STDCALL_SUPPORTED)\r