]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/Irrlicht.cpp
Reduce IrrCompileConfig usage to files that actually need it
[irrlicht.git] / source / Irrlicht / Irrlicht.cpp
1 // Copyright (C) 2002-2012 Nikolaus Gebhardt\r
2 // This file is part of the "Irrlicht Engine".\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h\r
4 \r
5 \r
6 static const char* const copyright = "Irrlicht Engine (c) 2002-2017 Nikolaus Gebhardt"; // put string in binary\r
7 \r
8 #ifdef _IRR_WINDOWS_\r
9         #include <windows.h>\r
10         #if defined(_DEBUG) && !defined(__GNUWIN32__)\r
11                 #include <crtdbg.h>\r
12         #endif // _DEBUG\r
13 #endif\r
14 \r
15 #include "irrlicht.h"\r
16 #ifdef _IRR_COMPILE_WITH_WINDOWS_DEVICE_\r
17 #include "CIrrDeviceWin32.h"\r
18 #endif\r
19 \r
20 #ifdef _IRR_COMPILE_WITH_X11_DEVICE_\r
21 #include "CIrrDeviceLinux.h"\r
22 #endif\r
23 \r
24 #ifdef _IRR_COMPILE_WITH_OSX_DEVICE_\r
25 #include "CIrrDeviceOSX.h"\r
26 #endif\r
27 \r
28 #ifdef _IRR_COMPILE_WITH_SDL_DEVICE_\r
29 #include "CIrrDeviceSDL.h"\r
30 #endif\r
31 \r
32 #ifdef _IRR_COMPILE_WITH_IOS_DEVICE_\r
33 #include "CIrrDeviceiOS.h"\r
34 #endif\r
35 \r
36 #ifdef _IRR_COMPILE_WITH_ANDROID_DEVICE_\r
37 #include "Android/CIrrDeviceAndroid.h"\r
38 #endif\r
39 \r
40 namespace irr\r
41 {\r
42         //! stub for calling createDeviceEx\r
43         IRRLICHT_API IrrlichtDevice* IRRCALLCONV createDevice(video::E_DRIVER_TYPE driverType,\r
44                         const core::dimension2d<u32>& windowSize,\r
45                         u32 bits, bool fullscreen,\r
46                         bool stencilbuffer, bool vsync, IEventReceiver* res)\r
47         {\r
48                 (void)copyright;        // prevent unused variable warning\r
49 \r
50                 SIrrlichtCreationParameters p;\r
51                 p.DriverType = driverType;\r
52                 p.WindowSize = windowSize;\r
53                 p.Bits = (u8)bits;\r
54                 p.Fullscreen = fullscreen;\r
55                 p.Stencilbuffer = stencilbuffer;\r
56                 p.Vsync = vsync;\r
57                 p.EventReceiver = res;\r
58 \r
59                 return createDeviceEx(p);\r
60         }\r
61 \r
62         extern "C" IRRLICHT_API IrrlichtDevice* IRRCALLCONV createDeviceEx(const SIrrlichtCreationParameters& params)\r
63         {\r
64 \r
65                 IrrlichtDevice* dev = 0;\r
66 \r
67 #ifdef _IRR_COMPILE_WITH_WINDOWS_DEVICE_\r
68                 if (params.DeviceType == EIDT_WIN32 || (!dev && params.DeviceType == EIDT_BEST))\r
69                         dev = new CIrrDeviceWin32(params);\r
70 #endif\r
71 \r
72 #ifdef _IRR_COMPILE_WITH_OSX_DEVICE_\r
73                 if (params.DeviceType == EIDT_OSX || (!dev && params.DeviceType == EIDT_BEST))\r
74                         dev = new CIrrDeviceMacOSX(params);\r
75 #endif\r
76 \r
77 #ifdef _IRR_COMPILE_WITH_X11_DEVICE_\r
78                 if (params.DeviceType == EIDT_X11 || (!dev && params.DeviceType == EIDT_BEST))\r
79                         dev = new CIrrDeviceLinux(params);\r
80 #endif\r
81         \r
82 #ifdef _IRR_COMPILE_WITH_IOS_DEVICE_\r
83                 if (params.DeviceType == EIDT_IOS || (!dev && params.DeviceType == EIDT_BEST))\r
84                         dev = new CIrrDeviceiOS(params);\r
85 #endif\r
86 \r
87 #ifdef _IRR_COMPILE_WITH_ANDROID_DEVICE_\r
88                 if (params.DeviceType == EIDT_ANDROID || (!dev && params.DeviceType == EIDT_BEST))\r
89                         dev = new CIrrDeviceAndroid(params);\r
90 #endif\r
91 \r
92 #ifdef _IRR_COMPILE_WITH_SDL_DEVICE_\r
93                 if (params.DeviceType == EIDT_SDL || (!dev && params.DeviceType == EIDT_BEST))\r
94                         dev = new CIrrDeviceSDL(params);\r
95 #endif\r
96 \r
97                 if (dev && !dev->getVideoDriver() && params.DriverType != video::EDT_NULL)\r
98                 {\r
99                         dev->closeDevice(); // destroy window\r
100                         dev->run(); // consume quit message\r
101                         dev->drop();\r
102                         dev = 0;\r
103                 }\r
104 \r
105                 return dev;\r
106         }\r
107 \r
108 namespace core\r
109 {\r
110         const matrix4 IdentityMatrix(matrix4::EM4CONST_IDENTITY);\r
111 }\r
112 \r
113 namespace video\r
114 {\r
115         SMaterial IdentityMaterial;\r
116 }\r
117 \r
118 } // end namespace irr\r
119 \r
120 \r
121 #if defined(_IRR_WINDOWS_API_) && !defined(_IRR_STATIC_LIB_)\r
122 \r
123 BOOL APIENTRY DllMain( HANDLE hModule,\r
124                        DWORD  ul_reason_for_call,\r
125                        LPVOID lpReserved )\r
126 {\r
127         // _crtBreakAlloc = 139;\r
128 \r
129     switch (ul_reason_for_call)\r
130         {\r
131                 case DLL_PROCESS_ATTACH:\r
132                         #if defined(_DEBUG) && !defined(__GNUWIN32__)\r
133                                 _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);\r
134                         #endif\r
135                         break;\r
136                 case DLL_THREAD_ATTACH:\r
137                 case DLL_THREAD_DETACH:\r
138                 case DLL_PROCESS_DETACH:\r
139                         break;\r
140     }\r
141     return TRUE;\r
142 }\r
143 \r
144 #endif // defined(_IRR_WINDOWS_)\r
145 \r