SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_Core.hpp
Go to the documentation of this file.
1#pragma once
2
3// #include <SDOM/SDOM.hpp>
4#include <atomic>
8// #include <SDOM/SDOM_DisplayHandle.hpp>
9
10namespace SDOM
11{
12 class Factory;
13 class Event;
14 class EventType;
15 class EventManager;
16 class Stage;
17 class IDisplayObject;
18 class DisplayHandle;
19 class IAssetObject;
20 class AssetHandle;
21
26 class Core final : public IDataObject
27 {
28 using SUPER = IDataObject;
29
30 public:
31 // --- Configuration Struct --- //
32 struct CoreConfig
33 {
34 float windowWidth = 800.0f;
35 float windowHeight = 600.0f;
36 float pixelWidth = 2.0f;
37 float pixelHeight = 2.0f;
39 bool allowTextureResize = true;
40 SDL_RendererLogicalPresentation rendererLogicalPresentation = SDL_LOGICAL_PRESENTATION_LETTERBOX;
41 SDL_WindowFlags windowFlags = SDL_WINDOW_RESIZABLE;
42 SDL_PixelFormat pixelFormat = SDL_PIXELFORMAT_RGBA8888;
43 SDL_Color color; // background color
44 };
45
46 // --- Singleton Access --- //
47 static Core& getInstance() { static Core instance; return instance; }
48
49 // --- Lifecycle (IDataObject overrides) --- //
50 virtual bool onInit() override;
51 virtual void onQuit() override;
52 virtual bool onUnitTest() override;
53
54 // --- Main Loop & Event Dispatch --- //
55 // Return true when the run completed successfully (no failing unit tests or runtime errors).
56 bool run();
57 bool run(const CoreConfig& config); // Convenience overload to configure (from C++) and run
58 bool run(const sol::table& config); // Convenience overload to configure and run
59 bool run(const std::string& configFile); // Convenience overload to load config from Lua file
60
61 // Poll and dispatch pending SDL events once (test helper)
62 void pumpEventsOnce();
63 // Signal the main loop to stop. Provide a clear, non-generic message
64 // so test output indicates this was a deliberate shutdown requested
65 // from scripting (e.g. Lua's Core:quit()). Use the INFO logging macro
66 // for consistency with the project's logging helpers.
67 void isRunning(bool bRunning ) { bIsRunning_ = bRunning; }
68 void quit() { INFO("Core: shutdown requested. Performing graceful shutdown..."); bIsRunning_ = false; }
69 void shutdown() { quit(); }
70
71 void onRender();
72 void onEvent(Event& event);
73 void onUpdate(float fElapsedTime);
74 void onWindowResize(int newWidth, int newHeight);
75
76 // --- Configuration & Initialization --- //
77 void configure(const CoreConfig& config);
78 void configureFromLua(const sol::table& config);
79 void configureFromLuaFile(const std::string& filename);
80 void reconfigure(const CoreConfig& config);
81
82 // --- Callback/Hook Registration --- //
83 void registerOnInit(std::function<bool()> fn) { fnOnInit = fn; }
84 void registerOnQuit(std::function<void()> fn) { fnOnQuit = fn; }
85 void registerOnUpdate(std::function<void(float)> fn) { fnOnUpdate = fn; }
86 void registerOnEvent(std::function<void(const Event&)> fn) { fnOnEvent = fn; }
87 void registerOnRender(std::function<void()> fn) { fnOnRender = fn; }
88 void registerOnUnitTest(std::function<bool()> fn) { fnOnUnitTest = fn; }
89 void registerOnWindowResize(std::function<void(int, int)> fn) { fnOnWindowResize = fn; }
90
91 // --- Lua Registration Internal Helpers --- //
92 void _fnOnInit(std::function<bool()> fn) { fnOnInit = fn; }
93 void _fnOnQuit(std::function<void()> fn) { fnOnQuit = fn; }
94 void _fnOnUpdate(std::function<void(float)> fn) { fnOnUpdate = fn; }
95 void _fnOnEvent(std::function<void(const Event&)> fn) { fnOnEvent = fn; }
96 void _fnOnRender(std::function<void()> fn) { fnOnRender = fn; }
97 void _fnOnUnitTest(std::function<bool()> fn) { fnOnUnitTest = fn; }
98 void _fnOnWindowResize(std::function<void(int, int)> fn) { fnOnWindowResize = fn; }
99 std::function<bool()> _fnGetOnInit() { return fnOnInit; }
100 std::function<void()> _fnGetOnQuit() { return fnOnQuit; }
101 std::function<void(float)> _fnGetOnUpdate() { return fnOnUpdate; }
102 std::function<void(const Event&)> _fnGetOnEvent() { return fnOnEvent; }
103 std::function<void()> _fnGetOnRender() { return fnOnRender; }
104 std::function<bool()> _fnGetOnUnitTest() { return fnOnUnitTest; }
105 std::function<void(int, int)> _fnGetOnWindowResize() { return fnOnWindowResize; }
106
107 // --- Stage/Root Node Management --- //
108 void setRootNode(const std::string& name);
109 void setRootNode(const DisplayHandle& handle);
110 void setStage(const std::string& name); // Alias for backward compatibility
111 Stage* getStage() const; // Alias for backward compatibility
114 DisplayHandle getStageHandle() const { return getRootNode(); } // Alias for backward compatibility
115
116 // --- SDL Resource Accessors --- //
117 SDL_Window* getWindow() const { return window_; }
118 SDL_Renderer* getRenderer() const { return renderer_; }
119 SDL_Texture* getTexture() const { return texture_; }
120 SDL_Color getColor() const { return config_.color; }
121 void setColor(const SDL_Color& color) { config_.color = color; }
122
123 // --- Configuration Accessors --- //
124 CoreConfig& getConfig();
125 float getWindowWidth() const;
126 float getWindowHeight() const;
127 float getPixelWidth() const;
128 float getPixelHeight() const;
129 bool getPreserveAspectRatio() const;
130 bool getAllowTextureResize() const;
131 SDL_RendererLogicalPresentation getRendererLogicalPresentation() const;
132 SDL_WindowFlags getWindowFlags() const;
133 SDL_PixelFormat getPixelFormat() const;
134
135 void setConfig(CoreConfig& config);
136 void setWindowWidth(float width);
137 void setWindowHeight(float height);
138 void setPixelWidth(float width);
139 void setPixelHeight(float height);
140 void setPreserveAspectRatio(bool preserve);
141 void setAllowTextureResize(bool allow);
142 void setRendererLogicalPresentation(SDL_RendererLogicalPresentation presentation);
143 void setWindowFlags(SDL_WindowFlags flags);
144 void setPixelFormat(SDL_PixelFormat format);
145
146 // --- Factory & EventManager Access --- //
147 Factory& getFactory() const { return *factory_; }
148 EventManager& getEventManager() const { return *eventManager_; }
149 bool getIsTraversing() const { return isTraversing_; }
150 void setIsTraversing(bool traversing) { isTraversing_ = traversing; }
151
152 // --- Focus & Hover Management --- //
153 void handleTabKeyPress();
160
161 // --- Window Title & Timing --- //
162 std::string getWindowTitle() const { return windowTitle_; }
163 void setWindowTitle(const std::string& title)
164 {
165 windowTitle_ = title;
166 if (window_)
167 SDL_SetWindowTitle(window_, windowTitle_.c_str());
168 }
169 float getElapsedTime() const { return fElapsedTime_; }
170
171 // --- Lua State Access --- //
172 sol::state& getLua() { return lua_; }
173
174 // --- Factory Wrappers --- //
175
176 // --- Object Creation --- //
177 DisplayHandle createDisplayObject(const std::string& typeName, const sol::table& config);
178 DisplayHandle createDisplayObject(const std::string& typeName, const SDOM::IDisplayObject::InitStruct& init);
179 DisplayHandle createDisplayObjectFromScript(const std::string& typeName, const std::string& luaScript);
180
181 AssetHandle createAssetObject(const std::string& typeName, const sol::table& config);
182 AssetHandle createAssetObject(const std::string& typeName, const SDOM::IAssetObject::InitStruct& init);
183 AssetHandle createAssetObjectFromScript(const std::string& typeName, const std::string& luaScript);
184
185 // --- Object Lookup --- //
186 IDisplayObject* getDisplayObjectPtr(const std::string& name);
187 DisplayHandle getDisplayObject(const std::string& name);
188 // Backwards-compatibility: old name retained as a thin wrapper
189 DisplayHandle getDisplayObjectHandle(const std::string& name) { return getDisplayObject(name); }
190 bool hasDisplayObject(const std::string& name) const;
191
192 IAssetObject* getAssetObjectPtr(const std::string& name);
193 AssetHandle getAssetObject(const std::string& name);
194 bool hasAssetObject(const std::string& name) const;
195
196 // --- Display Object Management --- //
197 void addDisplayObject(const std::string& name, std::unique_ptr<IDisplayObject> displayObject);
198 void destroyDisplayObject(const std::string& name);
199
200 // --- Orphan Management --- //
201 int countOrphanedDisplayObjects() const;
202 std::vector<DisplayHandle> getOrphanedDisplayObjects();
204 void detachOrphans();
205
206 // --- Future Child Management --- //
208 void addToOrphanList(const DisplayHandle& orphan);
209 void addToFutureChildrenList(const DisplayHandle& child, const DisplayHandle& parent,
210 bool useWorld=false, int worldX=0, int worldY=0);
211
212 // --- Utility Methods --- //
213 std::vector<std::string> listDisplayObjectNames() const;
214 void clearFactory();
215 void printObjectRegistry() const;
216
217 // --- Forwarding helpers to Factory for type-level introspection --- //
218 std::vector<std::string> getPropertyNamesForType(const std::string& typeName) const;
219 std::vector<std::string> getCommandNamesForType(const std::string& typeName) const;
220 std::vector<std::string> getFunctionNamesForType(const std::string& typeName) const;
221
222 // --- For Testing --- //
223 void setStopAfterUnitTests(bool stop) { stopAfterUnitTests_ = stop; }
224 bool getStopAfterUnitTests() { return stopAfterUnitTests_; }
225
226 // --- Input filtering for tests --- //
227 // When true, real mouse input from SDL_PollEvent() is ignored so
228 // synthetic events queued by unit tests are not interfered with by
229 // the user's mouse movements.
230 void setIgnoreRealInput(bool v) { ignoreRealInput_ = v; }
231 bool getIgnoreRealInput() const { return ignoreRealInput_; }
232
233 // --- Keyfocus gray level for testing/focus indication --- //
234 float getKeyfocusGray() const { return keyfocus_gray_; }
235 void setKeyfocusGray(float gray) { keyfocus_gray_ = gray; }
236
237 private:
238 // --- Singleton Enforcement --- //
239 Core();
240 ~Core();
241 Core(const Core&) = delete;
242 Core& operator=(const Core&) = delete;
243 Core(Core&&) = delete;
244 Core& operator=(Core&&) = delete;
245
246 // --- SDL Resources --- //
247 SDL_Window* window_ = nullptr;
248 SDL_Renderer* renderer_ = nullptr;
249 SDL_Texture* texture_ = nullptr;
250 std::string windowTitle_ = "SDOM Application";
251 SDL_Color color_ = { 0, 0, 0, 255 }; // Default BLACK background color
252
253 // --- State --- //
254 bool bIsRunning_ = true;
255 bool isTraversing_ = false;
256 float fElapsedTime_; // Elapsed time since the last update
257 bool ignoreRealInput_ = false; // when true, drop real SDL mouse events during tests
258 float keyfocus_gray_ = 0.0f; // used for keyfocus indication
259
260 // Track whether SDL has been started for this Core instance. Using a
261 // member instead of a function-static variable keeps state tied to
262 // the instance lifetime and is easier to reason about in tests.
263 bool sdlStarted_ = false;
264
265 // For testing: stop main loop after unit tests
266 bool stopAfterUnitTests_ = false;
267
268 // Deferred-apply support: allow worker threads to request a
269 // CoreConfig change which will be applied on the main thread
270 // during a safe point (start of frame / event pumping).
271 std::mutex pendingConfigMutex_;
272 std::atomic_bool pendingConfigRequested_{false};
273 CoreConfig pendingConfig_;
274
275 // --- DOM --- //
276 DisplayHandle rootNode_; // The root of the resource tree
277 DisplayHandle hoveredObject_;
278 DisplayHandle keyboardFocusedObject_;
279
280 // --- Tab Priority --- //
281 struct TabPriorityComparator {
282 bool operator()(const DisplayHandle& a, const DisplayHandle& b) const {
283 // If either handle is invalid, treat invalid handles as lower priority
284 // so they end up at the back of the ordering. Avoid throwing an error
285 // here because handles may become invalid between insertion and
286 // comparison (e.g., when objects are destroyed during traversal).
287 if (!a.isValid() && !b.isValid()) return false;
288 if (!a.isValid()) return true; // a < b
289 if (!b.isValid()) return false; // a >= b
290 return a->getTabPriority() < b->getTabPriority();
291 }
292 };
293 std::priority_queue<DisplayHandle, std::vector<DisplayHandle>, TabPriorityComparator> tabList_;
294
295 // --- Configuration --- //
296 CoreConfig config_;
297
298 // --- Lua State --- //
299 sol::state lua_;
300
301 // --- Subsystems --- //
302 inline static Factory* factory_ = nullptr;
303 inline static EventManager* eventManager_ = nullptr;
304
305 // --- Callback Hooks --- //
306 std::function<bool()> fnOnInit = nullptr;
307 std::function<void()> fnOnQuit = nullptr;
308 std::function<void(float)> fnOnUpdate = nullptr;
309 std::function<void(const Event&)> fnOnEvent = nullptr;
310 std::function<void()> fnOnRender = nullptr;
311 std::function<bool()> fnOnUnitTest = nullptr;
312 std::function<void(int, int)> fnOnWindowResize = nullptr;
313
314 // --- Private Helpers --- //
315 void shutdown_SDL(); // Gracefully shutdown SDL subsystems and free resources
316 void refreshSDLResources(); // Initialize or refresh SDL resources (window, renderer, texture) as needed
317 bool coreTests_(); // some basic initial internal Core Unit Tests
318
319 // Request that the given config be applied on the main thread
320 // at the next safe point. Thread-safe.
321 void requestConfigApply(const CoreConfig& cfg);
322 // Called on main thread to apply any pending config request.
323 void applyPendingConfig();
324
325 protected:
326 friend Factory;
327
328 // --- Lua Registration --- //
329 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua) override;
330 sol::usertype<Core> objHandleType_;
331
332
333 };
334
335} // namespace SDOM
336
#define INFO(...)
Logs an informational message to stdout.
Definition SDOM.hpp:383
Definition SDOM_AssetHandle.hpp:13
The central singleton framework object for SDOM.
Definition SDOM_Core.hpp:27
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua) override
Definition SDOM_Core.cpp:1457
SDL_WindowFlags getWindowFlags() const
Definition SDOM_Core.cpp:1135
std::function< bool()> _fnGetOnUnitTest()
Definition SDOM_Core.hpp:104
float getWindowHeight() const
Definition SDOM_Core.cpp:1129
void setWindowTitle(const std::string &title)
Definition SDOM_Core.hpp:163
std::function< void()> _fnGetOnRender()
Definition SDOM_Core.hpp:103
void printObjectRegistry() const
Definition SDOM_Core.cpp:1449
void configure(const CoreConfig &config)
Definition SDOM_Core.cpp:60
void registerOnInit(std::function< bool()> fn)
Definition SDOM_Core.hpp:83
std::vector< std::string > getCommandNamesForType(const std::string &typeName) const
void _fnOnQuit(std::function< void()> fn)
Definition SDOM_Core.hpp:93
void setWindowHeight(float height)
Definition SDOM_Core.cpp:1140
bool hasDisplayObject(const std::string &name) const
Definition SDOM_Core.cpp:1395
void setPixelFormat(SDL_PixelFormat format)
Definition SDOM_Core.cpp:1146
SDL_Texture * getTexture() const
Definition SDOM_Core.hpp:119
sol::usertype< Core > objHandleType_
Definition SDOM_Core.hpp:330
SDL_Window * getWindow() const
Definition SDOM_Core.hpp:117
void setPixelWidth(float width)
Definition SDOM_Core.cpp:1141
EventManager & getEventManager() const
Definition SDOM_Core.hpp:148
std::vector< std::string > getFunctionNamesForType(const std::string &typeName) const
std::function< void(const Event &)> _fnGetOnEvent()
Definition SDOM_Core.hpp:102
void onRender()
Definition SDOM_Core.cpp:834
void shutdown()
Definition SDOM_Core.hpp:69
SDL_Renderer * getRenderer() const
Definition SDOM_Core.hpp:118
void configureFromLua(const sol::table &config)
Definition SDOM_Core.cpp:70
void quit()
Definition SDOM_Core.hpp:68
void configureFromLuaFile(const std::string &filename)
Definition SDOM_Core.cpp:152
IAssetObject * getAssetObjectPtr(const std::string &name)
Definition SDOM_Core.cpp:1400
SDL_RendererLogicalPresentation getRendererLogicalPresentation() const
Definition SDOM_Core.cpp:1134
DisplayHandle getStageHandle() const
Definition SDOM_Core.hpp:114
void _fnOnRender(std::function< void()> fn)
Definition SDOM_Core.hpp:96
void setConfig(CoreConfig &config)
Definition SDOM_Core.cpp:1138
void registerOnEvent(std::function< void(const Event &)> fn)
Definition SDOM_Core.hpp:86
std::function< void(float)> _fnGetOnUpdate()
Definition SDOM_Core.hpp:101
IDisplayObject * getDisplayObjectPtr(const std::string &name)
Definition SDOM_Core.cpp:1389
void setStage(const std::string &name)
Definition SDOM_Core.cpp:1345
void attachFutureChildren()
Definition SDOM_Core.cpp:1432
friend Factory
Definition SDOM_Core.hpp:326
void registerOnUpdate(std::function< void(float)> fn)
Definition SDOM_Core.hpp:85
void setPreserveAspectRatio(bool preserve)
Definition SDOM_Core.cpp:1143
AssetHandle getAssetObject(const std::string &name)
Definition SDOM_Core.cpp:1403
DisplayHandle getKeyboardFocusedObject() const
Definition SDOM_Core.cpp:1321
float getElapsedTime() const
Definition SDOM_Core.hpp:169
float getPixelHeight() const
Definition SDOM_Core.cpp:1131
bool hasAssetObject(const std::string &name) const
Definition SDOM_Core.cpp:1406
void _fnOnEvent(std::function< void(const Event &)> fn)
Definition SDOM_Core.hpp:95
void setIsTraversing(bool traversing)
Definition SDOM_Core.hpp:150
float getPixelWidth() const
Definition SDOM_Core.cpp:1130
AssetHandle createAssetObject(const std::string &typeName, const sol::table &config)
Definition SDOM_Core.cpp:1378
void setKeyboardFocusedObject(DisplayHandle obj)
Definition SDOM_Core.cpp:1319
void setWindowFlags(SDL_WindowFlags flags)
Definition SDOM_Core.cpp:1145
void clearFactory()
Definition SDOM_Core.cpp:1446
bool getIgnoreRealInput() const
Definition SDOM_Core.hpp:231
float getKeyfocusGray() const
Definition SDOM_Core.hpp:234
void onWindowResize(int newWidth, int newHeight)
Definition SDOM_Core.cpp:1056
void clearKeyboardFocusedObject()
Definition SDOM_Core.cpp:1323
std::function< void(int, int)> _fnGetOnWindowResize()
Definition SDOM_Core.hpp:105
void setKeyfocusGray(float gray)
Definition SDOM_Core.hpp:235
void reconfigure(const CoreConfig &config)
Definition SDOM_Core.cpp:358
std::function< void()> _fnGetOnQuit()
Definition SDOM_Core.hpp:100
void setRootNode(const std::string &name)
Definition SDOM_Core.cpp:1331
void setWindowWidth(float width)
Definition SDOM_Core.cpp:1139
void registerOnUnitTest(std::function< bool()> fn)
Definition SDOM_Core.hpp:88
void handleTabKeyPress()
Definition SDOM_Core.cpp:1191
std::string getWindowTitle() const
Definition SDOM_Core.hpp:162
void setColor(const SDL_Color &color)
Definition SDOM_Core.hpp:121
void registerOnQuit(std::function< void()> fn)
Definition SDOM_Core.hpp:84
bool run()
Definition SDOM_Core.cpp:504
AssetHandle createAssetObjectFromScript(const std::string &typeName, const std::string &luaScript)
Definition SDOM_Core.cpp:1384
void isRunning(bool bRunning)
Definition SDOM_Core.hpp:67
bool getStopAfterUnitTests()
Definition SDOM_Core.hpp:224
void _fnOnInit(std::function< bool()> fn)
Definition SDOM_Core.hpp:92
void setStopAfterUnitTests(bool stop)
Definition SDOM_Core.hpp:223
virtual void onQuit() override
Definition SDOM_Core.cpp:780
DisplayHandle getRootNode() const
Definition SDOM_Core.cpp:1359
CoreConfig & getConfig()
Definition SDOM_Core.cpp:1127
void addToOrphanList(const DisplayHandle &orphan)
Definition SDOM_Core.cpp:1435
DisplayHandle getMouseHoveredObject() const
Definition SDOM_Core.cpp:1328
std::vector< std::string > getPropertyNamesForType(const std::string &typeName) const
void destroyOrphanedDisplayObjects()
Definition SDOM_Core.cpp:1425
void destroyDisplayObject(const std::string &name)
Definition SDOM_Core.cpp:1415
bool getAllowTextureResize() const
Definition SDOM_Core.cpp:1133
void handleTabKeyPressReverse()
Definition SDOM_Core.cpp:1255
virtual bool onInit() override
Definition SDOM_Core.cpp:760
void onUpdate(float fElapsedTime)
Definition SDOM_Core.cpp:944
std::vector< DisplayHandle > getOrphanedDisplayObjects()
Definition SDOM_Core.cpp:1422
void addToFutureChildrenList(const DisplayHandle &child, const DisplayHandle &parent, bool useWorld=false, int worldX=0, int worldY=0)
Definition SDOM_Core.cpp:1438
float getWindowWidth() const
Definition SDOM_Core.cpp:1128
void pumpEventsOnce()
Definition SDOM_Core.cpp:723
DisplayHandle createDisplayObject(const std::string &typeName, const sol::table &config)
Definition SDOM_Core.cpp:1368
void registerOnRender(std::function< void()> fn)
Definition SDOM_Core.hpp:87
void setAllowTextureResize(bool allow)
Definition SDOM_Core.cpp:1144
IDisplayObject * getRootNodePtr() const
Definition SDOM_Core.cpp:1355
void detachOrphans()
Definition SDOM_Core.cpp:1428
void _fnOnUnitTest(std::function< bool()> fn)
Definition SDOM_Core.hpp:97
void _fnOnUpdate(std::function< void(float)> fn)
Definition SDOM_Core.hpp:94
void registerOnWindowResize(std::function< void(int, int)> fn)
Definition SDOM_Core.hpp:89
DisplayHandle getDisplayObjectHandle(const std::string &name)
Definition SDOM_Core.hpp:189
void _fnOnWindowResize(std::function< void(int, int)> fn)
Definition SDOM_Core.hpp:98
Factory & getFactory() const
Definition SDOM_Core.hpp:147
DisplayHandle getDisplayObject(const std::string &name)
Definition SDOM_Core.cpp:1392
bool getPreserveAspectRatio() const
Definition SDOM_Core.cpp:1132
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_Core.cpp:1002
void setPixelHeight(float height)
Definition SDOM_Core.cpp:1142
void setRendererLogicalPresentation(SDL_RendererLogicalPresentation presentation)
Definition SDOM_Core.cpp:1147
void onEvent(Event &event)
Definition SDOM_Core.cpp:915
void setMouseHoveredObject(DisplayHandle obj)
Definition SDOM_Core.cpp:1326
void addDisplayObject(const std::string &name, std::unique_ptr< IDisplayObject > displayObject)
Definition SDOM_Core.cpp:1412
void setIgnoreRealInput(bool v)
Definition SDOM_Core.hpp:230
bool getIsTraversing() const
Definition SDOM_Core.hpp:149
SDL_PixelFormat getPixelFormat() const
Definition SDOM_Core.cpp:1136
std::vector< std::string > listDisplayObjectNames() const
Definition SDOM_Core.cpp:1443
DisplayHandle createDisplayObjectFromScript(const std::string &typeName, const std::string &luaScript)
Definition SDOM_Core.cpp:1374
SDL_Color getColor() const
Definition SDOM_Core.hpp:120
static Core & getInstance()
Definition SDOM_Core.hpp:47
Stage * getStage() const
Definition SDOM_Core.cpp:1350
int countOrphanedDisplayObjects() const
Definition SDOM_Core.cpp:1419
std::function< bool()> _fnGetOnInit()
Definition SDOM_Core.hpp:99
sol::state & getLua()
Definition SDOM_Core.hpp:172
Definition SDOM_DisplayHandle.hpp:24
Definition SDOM_EventManager.hpp:56
Definition SDOM_Event.hpp:55
Definition SDOM_Factory.hpp:43
Definition SDOM_IAssetObject.hpp:10
Definition SDOM_IDataObject.hpp:107
Definition SDOM_IDisplayObject.hpp:153
Definition SDOM_Stage.hpp:11
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
Definition SDOM_Core.hpp:33
float pixelWidth
Definition SDOM_Core.hpp:36
bool preserveAspectRatio
Definition SDOM_Core.hpp:38
float windowHeight
Definition SDOM_Core.hpp:35
SDL_PixelFormat pixelFormat
Definition SDOM_Core.hpp:42
SDL_RendererLogicalPresentation rendererLogicalPresentation
Definition SDOM_Core.hpp:40
bool allowTextureResize
Definition SDOM_Core.hpp:39
SDL_Color color
Definition SDOM_Core.hpp:43
float windowWidth
Definition SDOM_Core.hpp:34
float pixelHeight
Definition SDOM_Core.hpp:37
SDL_WindowFlags windowFlags
Definition SDOM_Core.hpp:41
Definition SDOM_IAssetObject.hpp:18
Definition SDOM_IDisplayObject.hpp:187