26#include "SD/export.hpp"
45 std::string
name =
"SDEngine App";
72 void run(
const std::atomic<bool>* external_stop);
76 void close() { is_running =
false; }
78 void on_app_event(
Event& e);
81 template<
typename T,
typename... Args>
82 requires std::is_base_of_v<Layer, T>
84 return global_layers.push_layer<T>(std::forward<Args>(args)...);
89 return window_manager->create(props);
92 return window_manager->get_window(
id);
95 return window_manager->get_render_window(
id);
98 template<
typename T,
typename... Args>
99 requires std::is_base_of_v<Layer, T>
100 T& push_view_layer(
WindowId id, Args&&... args);
102 template<
typename T,
typename... Args>
103 requires std::is_base_of_v<View, T>
105 return view_manager->create<T>(std::move(name), std::forward<Args>(args)...);
111 return view_manager->get(name);
113 [[nodiscard]] std::expected<ViewId, ViewError>
get_view_id(
const std::string& name)
const {
114 return view_manager->get_id(name);
119 return view_manager->remove(name);
122 template<
typename T,
typename... Args>
123 requires std::is_base_of_v<Layer, T>
124 std::expected<std::reference_wrapper<T>,
ViewError> push_layer_to_view(
ViewId id, Args&&... args);
126 template<
typename T,
typename... Args>
127 requires std::is_base_of_v<Layer, T>
128 std::expected<std::reference_wrapper<T>,
ViewError> push_layer_to_view(
const std::string& name,
133 [[nodiscard]]
Scene*
get_scene(
const std::string& name)
const {
return scene_manager.get(name); }
135 void clear_game_layers();
138 void reload_shaders()
const;
143 .vulkan = *m_vulkan_ctx,
144 .renderer = *m_renderer,
145 .imgui = *m_imgui_ctx,
151 .
views = *view_manager,
152 .scenes = scene_manager,
153 .layout = *layout_manager,
154 .events = app_event_manager,
156 .global_layers = global_layers,
157 .hot_reload_enabled = hot_reload_enabled,
162 bool is_running =
true;
163 bool hot_reload_enabled =
true;
164 float hot_reload_timer = 0.0f;
191 void* m_game_handle =
nullptr;
Definition Application.hpp:58
ViewError remove_view(ViewId id)
Definition Application.hpp:117
FrameTimer timer
Definition Application.hpp:183
RuntimeStateManager * state_manager
Definition Application.hpp:182
std::expected< ViewId, ViewError > get_view_id(const std::string &name) const
Definition Application.hpp:113
ViewError remove_view(const std::string &name)
Definition Application.hpp:118
ViewResult get_view(const std::string &name) const
Definition Application.hpp:110
T & push_global_layer(Args &&... args)
Definition Application.hpp:83
std::unique_ptr< VulkanContext > m_vulkan_ctx
Definition Application.hpp:187
std::unique_ptr< WindowManager > window_manager
Definition Application.hpp:173
EngineServices services() const
Definition Application.hpp:140
Scene * create_scene(const std::string &name)
Definition Application.hpp:132
std::unique_ptr< VulkanRenderer > m_renderer
Definition Application.hpp:188
Scene * get_scene(const std::string &name) const
Definition Application.hpp:133
std::unique_ptr< LayoutManager > layout_manager
Definition Application.hpp:175
ApplicationRuntime runtime()
Definition Application.hpp:149
std::unique_ptr< SDImGuiContext > m_imgui_ctx
Definition Application.hpp:189
ViewManager::ViewResult ViewResult
Definition Application.hpp:70
Application(Application &&)=delete
T & create_view(std::string name, Args &&... args)
Definition Application.hpp:104
std::unique_ptr< GlfwContext > m_glfw_ctx
Definition Application.hpp:186
void close()
Definition Application.hpp:76
SceneManager scene_manager
Definition Application.hpp:176
Application(const Application &)=delete
Application & operator=(const Application &)=delete
VulkanWindow & get_render_window(const WindowId id) const
Definition Application.hpp:94
Window & get_window(const WindowId id) const
Definition Application.hpp:91
EventManager app_event_manager
Definition Application.hpp:179
ApplicationSpecification app_spec
Definition Application.hpp:167
std::unique_ptr< ViewManager > view_manager
Definition Application.hpp:174
ViewResult get_view(const ViewId id) const
Definition Application.hpp:109
Application & operator=(Application &&)=delete
LayerList global_layers
Definition Application.hpp:178
WindowId create_window(const WindowProps &props)
Definition Application.hpp:88
Definition EventManager.hpp:20
Tracks frame timing, fixed timestep accumulation, and CPU work time.
Definition FrameTimer.hpp:21
Definition GameContext.hpp:20
Definition LayerList.hpp:21
Base class for all layers. Prefer using System, RenderStage, or Panel instead.
Definition Layer.hpp:28
Manages window layouts using ImGui DockBuilder for presets and INI for user layouts.
Definition LayoutManager.hpp:14
Definition RuntimeStateManager.hpp:24
Definition SceneManager.hpp:14
std::expected< std::reference_wrapper< View >, ViewError > ViewResult
Definition ViewManager.hpp:47
Definition VulkanWindow.hpp:35
Definition Application.hpp:28
ViewError
Definition View.hpp:26
Definition ApplicationRuntime.hpp:12
ViewManager & views
Definition ApplicationRuntime.hpp:13
Definition Application.hpp:44
int width
Definition Application.hpp:46
std::string gameSoPath
Definition Application.hpp:49
int height
Definition Application.hpp:47
bool enableHotReload
Definition Application.hpp:48
std::string name
Definition Application.hpp:45
Definition EngineServices.hpp:10
GlfwContext & glfw
Definition EngineServices.hpp:11
Definition id_types.hpp:7
Definition id_types.hpp:28
Definition WindowManager.hpp:26