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