SDEngine
Game Engine
Loading...
Searching...
No Matches
WindowManager.hpp
Go to the documentation of this file.
1// TODO(docs): Add file-level Doxygen header
2// - @file WindowManager.hpp
3// - @brief Multi-window management for GLFW and Vulkan windows
4// - Relationship to ViewManager and Application
5#pragma once
6
7#include <unordered_map>
8#include <vector>
9
10#include "SD/arena.hpp"
12#include "SD/core/LayerList.hpp"
13#include "SD/core/Window.hpp"
14#include "SD/core/id_types.hpp"
16#include "SDImGuiContext.hpp"
18
19namespace sd {
20
21struct ViewManager;
22
23// TODO(docs): Document WindowProps struct
24// - Each field's purpose
25// - Default values rationale
27 std::string title;
29 explicit WindowProps(const std::string& title = "SD Engine", int width = 1280, int height = 720) :
31};
32
34 std::function<void()> close_app;
35 std::function<void(EventVariant&)> on_app_event;
36};
37// TODO(docs): Document WindowManager class
38// - Purpose: Manages multiple windows (GLFW + Vulkan)
39// - Window lifecycle (Create, Destroy, ProcessPendingCloses)
40// - WindowData structure (logic window, render window, layers)
41// - Update/Draw loop integration
42// - Example: Creating and managing multiple windows
84
85} // namespace sd
Definition Application.hpp:22
Definition arena.hpp:85
Definition EngineServices.hpp:10
Definition EventVariant.hpp:19
Definition LayerList.hpp:15
Definition SDImGuiContext.hpp:27
Definition ViewManager.hpp:21
Definition VulkanContext.hpp:22
Definition VulkanRenderer.hpp:10
Definition VulkanWindow.hpp:35
Definition id_types.hpp:29
Definition WindowManager.hpp:33
std::function< void()> close_app
Definition WindowManager.hpp:34
std::function< void(EventVariant &)> on_app_event
Definition WindowManager.hpp:35
Definition WindowManager.hpp:56
VulkanWindow * render
Definition WindowManager.hpp:58
LayerList view_layers
Definition WindowManager.hpp:59
Window * logic
Definition WindowManager.hpp:57
Definition WindowManager.hpp:43
VulkanRenderer & m_renderer
Definition WindowManager.hpp:76
auto & get_windows()
Definition WindowManager.hpp:62
WindowId create(const WindowProps &props, Arena *arena)
Definition WindowManager.cpp:26
const auto & get_windows() const
Definition WindowManager.hpp:63
VulkanContext & m_vulkan_ctx
Definition WindowManager.hpp:74
void update_window(WindowId id, WindowData &data, float dt)
Definition WindowManager.cpp:99
~WindowManager()
Definition WindowManager.cpp:19
std::unordered_map< WindowId, WindowData > m_windows
Definition WindowManager.hpp:80
void process_pending_closes()
Definition WindowManager.cpp:65
VulkanWindow & get_render_window(WindowId id)
Definition WindowManager.cpp:78
void update_windows(float dt)
Definition WindowManager.cpp:85
WindowManagerCallbacks m_callbacks
Definition WindowManager.hpp:78
Arena * window_arena
Definition WindowManager.hpp:68
SDImGuiContext & m_imgui_ctx
Definition WindowManager.hpp:75
WindowId m_next_window_id
Definition WindowManager.hpp:81
void destroy(WindowId id)
Definition WindowManager.cpp:55
Window & get_window(WindowId id)
Definition WindowManager.cpp:72
std::vector< WindowId > m_pending_close
Definition WindowManager.hpp:82
void draw_window(WindowId id, WindowData &data, ViewManager &viewManager)
Definition WindowManager.cpp:132
void draw_windows(ViewManager &viewManager)
Definition WindowManager.cpp:91
Definition WindowManager.hpp:26
std::string title
Definition WindowManager.hpp:27
WindowProps(const std::string &title="SD Engine", int width=1280, int height=720)
Definition WindowManager.hpp:29
int height
Definition WindowManager.hpp:28
int width
Definition WindowManager.hpp:28
Definition Window.hpp:49
consteval U64 type_id_of()
Definition type_id.hpp:6