1//************************************ bs::framework - Copyright 2018 Marko Pintera **************************************//
2//*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********//
3#pragma once
4
5#include "BsCorePrerequisites.h"
6
7/** @addtogroup Layers
8 * @{
9 */
10
11/** @defgroup Engine Engine
12 * Layer that builds upon Core, providing specific implementations of its interfaces as well as other high level systems.
13 * @{
14 */
15
16/** @defgroup 2D 2D
17 * Two dimensional geometry (sprites).
18 */
19
20/** @defgroup Application-Engine Application
21 * Entry point into the application.
22 */
23
24/** @defgroup GUI GUI
25 * Graphical user interface, including elements, styles, events and GUI manager.
26 */
27
28/** @defgroup Input-Engine Input
29 * User input (mouse, keyboard, gamepad, etc.).
30 */
31
32/** @defgroup Platform-Engine Platform
33 * %Platform specific functionality.
34 */
35
36/** @defgroup Resources-Engine Resources
37 * Builtin engine resource types and a manager for such resources.
38 */
39
40/** @cond RTTI */
41/** @defgroup RTTI-Impl-Engine RTTI types
42 * Types containing RTTI for specific classes.
43 */
44/** @endcond */
45
46/** @defgroup Utility-Engine Utility
47 * Various utility methods and types used by the engine layer.
48 */
49
50/** @} */
51/** @} */
52
53/** @addtogroup Internals
54 * @{
55 */
56
57/** @defgroup Internal-Engine Engine
58 * Layer that builds upon Core, providing specific implementations of its interfaces as well as other high level systems.
59 * @{
60 */
61
62/** @defgroup 2D-Internal 2D
63 * Two dimensional geometry (sprites).
64 */
65
66/** @defgroup GUI-Internal GUI
67 * Graphical user interface, including elements, styles, events and GUI manager.
68 */
69
70/** @defgroup Renderer-Engine-Internal Renderer
71 * Abstract interface and helper functionality for rendering scene objects and other geometry.
72 */
73
74/** @defgroup Resources-Engine-Internal Resources
75 * Builtin engine resource types and a manager for such resources.
76 */
77
78/** @defgroup Script-Internal Script
79 * Interaction with scripting languages and libraries.
80 */
81
82/** @defgroup Utility-Engine-Internal Utility
83 * Various utility methods and types used by the engine layer.
84 */
85
86/** @} */
87/** @} */
88
89// DLL export
90#if BS_PLATFORM == BS_PLATFORM_WIN32 // Windows
91# if BS_COMPILER == BS_COMPILER_MSVC
92# if defined(BS_STATIC_LIB)
93# define BS_EXPORT
94# else
95# if defined(BS_EXPORTS)
96# define BS_EXPORT __declspec(dllexport)
97# else
98# define BS_EXPORT __declspec(dllimport)
99# endif
100# endif
101# else
102# if defined(BS_STATIC_LIB)
103# define BS_EXPORT
104# else
105# if defined(BS_EXPORTS)
106# define BS_EXPORT __attribute__ ((dllexport))
107# else
108# define BS_EXPORT __attribute__ ((dllimport))
109# endif
110# endif
111# endif
112# define BS_HIDDEN
113#else // Linux/Mac settings
114# define BS_EXPORT __attribute__ ((visibility ("default")))
115# define BS_HIDDEN __attribute__ ((visibility ("hidden")))
116#endif
117
118#include "Scene/BsGameObject.h"
119#include "Utility/BsEnums.h"
120#include "Utility/BsPaths.h"
121#include "Localization/BsHEString.h"
122
123namespace bs
124{
125 static const StringID RendererDefault = "RenderBeast";
126
127 class VirtualButton;
128 class VirtualInput;
129 class InputConfiguration;
130 struct DragCallbackInfo;
131 struct ShortcutKey;
132
133 // GUI
134 class CGUIWidget;
135 class GUIManager;
136 class GUIWidget;
137 class GUIElementBase;
138 class GUIElement;
139 class GUILabel;
140 class GUIButtonBase;
141 class GUIButton;
142 class GUITexture;
143 class GUIToggle;
144 class GUIInputBox;
145 class GUISliderHandle;
146 class GUIScrollBarVert;
147 class GUIScrollBarHorz;
148 class GUIScrollArea;
149 class GUISkin;
150 class GUIRenderTexture;
151 struct GUIElementStyle;
152 class GUIMouseEvent;
153 class GUITextInputEvent;
154 class GUICommandEvent;
155 class GUIVirtualButtonEvent;
156 class GUILayout;
157 class GUILayoutX;
158 class GUILayoutY;
159 class GUIPanel;
160 class GUIFixedSpace;
161 class GUIFlexibleSpace;
162 class GUIInputCaret;
163 class GUIInputSelection;
164 struct GUIDimensions;
165 class GUIOptions;
166 class GUIToggleGroup;
167 class GUIListBox;
168 class GUIDropDownDataEntry;
169 class GUIDropDownMenu;
170 class DragAndDropManager;
171 class GUIMenu;
172 class GUIMenuItem;
173 class GUIContent;
174 class GUIContextMenu;
175 class GUIDropDownHitBox;
176 class GUIDropDownContent;
177 class RenderElement;
178 class GUISlider;
179 class GUISliderVert;
180 class GUISliderHorz;
181 class GUIProgressBar;
182 class GUICanvas;
183
184 class RenderableHandler;
185 class CProfilerOverlay;
186 class ProfilerOverlay;
187 class DrawHelper;
188 class PlainText;
189 class ScriptCode;
190 class ScriptCodeImportOptions;
191 class RendererMeshData;
192
193 // 2D
194 class TextSprite;
195 class ImageSprite;
196 class SpriteMaterial;
197 struct SpriteMaterialInfo;
198
199 typedef GameObjectHandle<CGUIWidget> HGUIWidget;
200 typedef GameObjectHandle<CProfilerOverlay> HProfilerOverlay;
201
202 typedef ResourceHandle<PlainText> HPlainText;
203 typedef ResourceHandle<ScriptCode> HScriptCode;
204 typedef ResourceHandle<GUISkin> HGUISkin;
205
206 /** RTTI types. */
207 enum TypeID_Engine
208 {
209 /* TID_CCamera = 30000, */
210 /* TID_CRenderable = 30001, */
211 /* TID_SpriteTexture = 30002, */
212 /* TID_Camera = 30003, */
213 /* TID_Renderable = 30004, */
214 TID_PlainText = 30005,
215 TID_ScriptCode = 30006,
216 TID_ScriptCodeImportOptions = 30007,
217 TID_GUIElementStyle = 30008,
218 TID_GUISkin = 30009,
219 TID_GUISkinEntry = 30010,
220 /* TID_Light = 30011, */
221 /* TID_CLight = 30012, */
222 TID_GameSettings = 30013,
223 TID_ResourceMapping = 30014,
224 //TID_AutoExposureSettings = 30016,
225 //TID_TonemappingSettings = 30017,
226 //TID_WhiteBalanceSettings = 30018,
227 //TID_ColorGradingSettings = 30019,
228 //TID_DepthOfFieldSettings = 30020,
229 //TID_AmbientOcclusionSettings = 30021,
230 //TID_ScreenSpaceReflectionsSettings = 30022
231 };
232}