Unravel Engine C++ Reference
Loading...
Searching...
No Matches
panel_base.cpp
Go to the documentation of this file.
1#include "panel_base.h"
2#include "imgui/imgui_internal.h"
3
4#include <imgui/imgui.h>
5
6namespace unravel
7{
8
9panel_base::panel_base(const char* name) : name_(name)
10{
11 name_fullscreen_ = name_ + " Fullscreen";
12}
13
15{
16 request_focus_ = true;
17}
18
19auto panel_base::get_window_name() const -> const char*
20{
21 if(is_fullscreen())
22 {
23 return name_fullscreen_.c_str();
24 }
25 return name_.c_str();
26}
27
34
36{
37 (void)ctx;
38}
39
41{
42 (void)ctx;
43}
44
45void panel_base::render_panel(rtti::context& ctx, const char* name, ImGuiWindowFlags flags)
46{
47 if(begin_panel(name, flags))
48 {
49 draw_ui(ctx);
50 }
52}
53
54bool panel_base::begin_panel(const char* name, ImGuiWindowFlags flags)
55{
56
58 {
59 ImGui::SetNextWindowFocus();
60 request_focus_ = false;
61 }
62 bool open = ImGui::Begin(name, nullptr, flags | ImGuiWindowFlags_NoFocusOnAppearing);
63 if(open)
64 {
65 is_focused_ = ImGui::IsWindowFocused();
66 set_visible(true);
67 }
68 else
69 {
70 is_focused_ = false;
71 set_visible(false);
72 }
73
74 return open;
75}
76
77void panel_base::end_panel(const char* name)
78{
79 ImGui::End();
80}
81
82} // namespace unravel
virtual void on_before_render(rtti::context &ctx)
void set_visible(bool visible)
Definition panel_base.h:18
virtual void end_panel(const char *name)
virtual void draw_ui(rtti::context &ctx)=0
virtual auto get_window_name() const -> const char *
virtual bool begin_panel(const char *name, ImGuiWindowFlags flags)
std::string name_fullscreen_
Definition panel_base.h:44
void on_frame_ui_render(rtti::context &ctx)
auto is_fullscreen() const -> bool
Definition panel_base.h:22
virtual auto get_window_flags() const -> ImGuiWindowFlags
Definition panel_base.h:36
panel_base(const char *name)
Definition panel_base.cpp:9
std::string name_
Definition panel_base.h:43
virtual void on_after_render(rtti::context &ctx)
void render_panel(rtti::context &ctx, const char *name, ImGuiWindowFlags flags=ImGuiWindowFlags_MenuBar)
std::string name
Definition hub.cpp:33