Vivid
Loading...
Searching...
No Matches
DockUI.cpp
1#include "DockUI.h"
2#include "menu/MenuUI.h"
3
4void VividGUI::InitUI()
5{
6 DockConfig();
7 InitDock();
8 // TODO: Implement MenuUI
9 // MenuUI::DrawMenuUI();
10}
11
12void VividGUI::DockConfig()
13{
14 // Initialize DockSpace
15 if (opt_fullscreen)
16 {
17 const ImGuiViewport* viewport = ImGui::GetMainViewport();
18 ImGui::SetNextWindowPos(viewport->WorkPos);
19 ImGui::SetNextWindowSize(viewport->WorkSize);
20 ImGui::SetNextWindowViewport(viewport->ID);
21 ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
22 ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
23 window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
24 window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
25 }
26 else
27 {
28 dockspace_flags &= ~ImGuiDockNodeFlags_PassthruCentralNode;
29 }
30
31 // When using ImGuiDockNodeFlags_PassthruCentralNode, DockSpace() will render our background
32 // and handle the pass-thru hole, so we ask Begin() to not render a background.
33 if (dockspace_flags & ImGuiDockNodeFlags_PassthruCentralNode)
34 window_flags |= ImGuiWindowFlags_NoBackground;
35
36 // Important: note that we proceed even if Begin() returns false (aka window is collapsed).
37 // This is because we want to keep our DockSpace() active. If a DockSpace() is inactive,
38 // all active windows docked into it will lose their parent and become undocked.
39 // We cannot preserve the docking relationship between an active window and an inactive docking, otherwise
40 // any change of dockspace/settings would lead to windows being stuck in limbo and never being visible.
41 if (!opt_padding)
42 ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
43}
44
45void VividGUI::InitDock()
46{
47 ImGui::Begin("Vivid Dock", nullptr, window_flags);
48 if (!opt_padding)
49 ImGui::PopStyleVar();
50
51 if (opt_fullscreen)
52 ImGui::PopStyleVar(2);
53
54 // Submit the DockSpace
55 ImGuiIO& io = ImGui::GetIO();
56
57 if (io.ConfigFlags & ImGuiConfigFlags_DockingEnable)
58 {
59 ImGuiID dockspace_id = ImGui::GetID("MyDockSpace");
60 ImGui::DockSpace(dockspace_id, ImVec2(0.0f, 0.0f), dockspace_flags);
61 }
62}
63
64void VividGUI::EndUI()
65{
66 ImGui::End();
67}