SDEngine
Game Engine
Loading...
Searching...
No Matches
EngineDebugLayer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <deque>
4
7#include "SD/core/Layer.hpp"
8#include "SD/export.hpp"
9
10namespace sd {
11
12class Scene;
13class View;
14class Event;
15
17public:
18 EngineDebugLayer(ApplicationRuntime runtime, EngineServices services, Scene* scene = nullptr);
19
20 void on_update(float dt) override;
21 void on_fixed_update(double dt) override;
22 void on_event(Event& e) override;
23 void on_im_gui_menu_bar() override;
24 void on_gui_render() override;
25
26private:
27 void display_view_info(View* selected_view);
28 void display_scene_selector();
29 void display_ecs_inspector();
30 void display_event_log();
31 void display_layout_menu();
32 void display_save_layout_dialog();
33 void display_delete_layout_dialog();
34 void display_overwrite_confirmation_dialog();
35 void handle_layout_shortcuts();
36 void handle_debug_shortcuts();
37
39 return ApplicationRuntime{
40 .views = m_views,
41 .scenes = m_scenes,
42 .layout = m_layout,
43 .events = m_events,
44 .timer = m_frame_timer,
45 .global_layers = m_global_layers,
46 .hot_reload_enabled = m_hot_reload_enabled,
47 };
48 }
49
58
59 // Dialog state
60 bool m_show_save_layout_dialog = false;
61 bool m_show_delete_layout_dialog = false;
62 bool m_show_overwrite_confirmation = false;
63 bool m_save_dialog_initialized = false;
65 std::array<char, 64> m_layout_name_buffer{};
66
67 // Window visibility - LayoutManager can control these
68 bool m_show_view_inspector = true;
69 bool m_show_scene_inspector = true;
70 bool m_show_event_log = true;
71 bool m_show_renderer_info = true;
72 bool m_show_context_overlay = false;
73
74public:
75 // LayoutManager interface
76 void set_view_inspector_visible(bool visible) { m_show_view_inspector = visible; }
77 void set_scene_inspector_visible(bool visible) { m_show_scene_inspector = visible; }
78 void set_event_log_visible(bool visible) { m_show_event_log = visible; }
79 void set_renderer_info_visible(bool visible) { m_show_renderer_info = visible; }
80 void set_context_overlay_visible(bool visible) { m_show_context_overlay = visible; }
81
82 bool is_view_inspector_visible() const { return m_show_view_inspector; }
83 bool is_scene_inspector_visible() const { return m_show_scene_inspector; }
84 bool is_event_log_visible() const { return m_show_event_log; }
85 bool is_renderer_info_visible() const { return m_show_renderer_info; }
86 bool is_context_overlay_visible() const { return m_show_context_overlay; }
87
88 // Apply a preset configuration (for LayoutManager)
89 void apply_preset_configuration(bool inspectors_visible, bool log_visible, bool renderer_visible);
90
91 bool m_log_events = false;
92 bool m_log_scene_changes = false;
93 bool m_log_view_resizes = false;
94 bool m_log_entity_lifecycle = false;
95
96 // Log viewer filters
97 char m_log_search_buffer[128]{};
98 int m_log_level_filter = 0;
99 bool m_log_filter_initialized = false;
100
101 // Category tree for log filtering
103 std::string name;
104 std::string full_path;
105 bool visible = true;
106 std::vector<CategoryNode> children;
107 };
108 CategoryNode m_category_root{"", "", true, {}};
109 bool m_category_tree_built = false;
110
111 void build_category_tree();
112 void render_category_node(CategoryNode& node);
113 bool is_log_visible(const std::string& category);
114 void set_category_visible(CategoryNode& node, bool visible);
115
116 float m_timer = 0.0f;
117 int m_update_count = 0;
118 int m_fixed_update_count = 0;
119 int m_prev_fixed = 0;
120 int m_prev_update = 0;
121
122 Scene* m_selected_scene = nullptr;
123 std::optional<ViewId> m_selected_view_id;
124
125 // Entity lifecycle tracking (for m_log_entity_lifecycle)
126 Scene* m_prev_scene_for_entity_count = nullptr;
127 int m_prev_entity_count = -1;
128
129 // Debug shortcut state
130 bool m_debug_mode_active = false;
131 float m_debug_mode_timer = 0.0f;
132};
133
134} // namespace sd
Definition EngineDebugLayer.hpp:16
void set_renderer_info_visible(bool visible)
Definition EngineDebugLayer.hpp:79
void set_event_log_visible(bool visible)
Definition EngineDebugLayer.hpp:78
void set_context_overlay_visible(bool visible)
Definition EngineDebugLayer.hpp:80
void set_view_inspector_visible(bool visible)
Definition EngineDebugLayer.hpp:76
bool & m_hot_reload_enabled
Definition EngineDebugLayer.hpp:55
VulkanRenderer & m_renderer
Definition EngineDebugLayer.hpp:57
bool is_view_inspector_visible() const
Definition EngineDebugLayer.hpp:82
SceneManager & m_scenes
Definition EngineDebugLayer.hpp:51
bool is_scene_inspector_visible() const
Definition EngineDebugLayer.hpp:83
std::optional< ViewId > m_selected_view_id
Definition EngineDebugLayer.hpp:123
FrameTimer & m_frame_timer
Definition EngineDebugLayer.hpp:54
ViewManager & m_views
Definition EngineDebugLayer.hpp:50
LayoutManager & m_layout
Definition EngineDebugLayer.hpp:52
bool is_renderer_info_visible() const
Definition EngineDebugLayer.hpp:85
void set_scene_inspector_visible(bool visible)
Definition EngineDebugLayer.hpp:77
bool is_event_log_visible() const
Definition EngineDebugLayer.hpp:84
ApplicationRuntime make_runtime()
Definition EngineDebugLayer.hpp:38
EventManager & m_events
Definition EngineDebugLayer.hpp:53
std::string m_pending_layout_name
Definition EngineDebugLayer.hpp:64
bool is_context_overlay_visible() const
Definition EngineDebugLayer.hpp:86
LayerList & m_global_layers
Definition EngineDebugLayer.hpp:56
Definition EventManager.hpp:20
Definition Event.hpp:56
Tracks frame timing, fixed timestep accumulation, and CPU work time.
Definition FrameTimer.hpp:21
Definition LayerList.hpp:21
Manages window layouts using ImGui DockBuilder for presets and INI for user layouts.
Definition LayoutManager.hpp:14
ImGui UI layer: panels, inspectors, debug tools. No GPU rendering.
Definition Layer.hpp:103
Definition SceneManager.hpp:14
Definition Scene.hpp:18
Definition ViewManager.hpp:26
Definition View.hpp:54
Definition VulkanRenderer.hpp:22
Definition Application.hpp:28
Definition ApplicationRuntime.hpp:12
ViewManager & views
Definition ApplicationRuntime.hpp:13
Definition EngineDebugLayer.hpp:102
std::string full_path
Definition EngineDebugLayer.hpp:104
std::string name
Definition EngineDebugLayer.hpp:103
std::vector< CategoryNode > children
Definition EngineDebugLayer.hpp:106
Definition EngineServices.hpp:10
constexpr T g_type_max
Definition types.hpp:21