Begin a docking space.
192 {
194
195
196 ImGuiID dockspaceID = ImGui::GetID("DockSpace");
197
198
199 const ImGuiViewport* viewport = ImGui::GetMainViewport();
200 ImGui::SetNextWindowPos(viewport->WorkPos);
201 ImGui::SetNextWindowSize(viewport->WorkSize);
202 ImGui::SetNextWindowViewport(viewport->ID);
203
204 ImGuiWindowFlags host_window_flags = 0;
205 host_window_flags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize;
206 host_window_flags |= ImGuiWindowFlags_NoMove;
207 host_window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
208 host_window_flags |= ImGuiWindowFlags_NoBackground;
209
210 char label[32];
211 ImFormatString(label, IM_ARRAYSIZE(label), "DockSpaceViewport_%08X", viewport->ID);
212 ImGui::Begin(label, NULL, host_window_flags);
213
214
215
216
217 ImGuiDockNodeFlags dockspaceFlags =
218 ImGuiDockNodeFlags_PassthruCentralNode;
219
220
221
222
223 if (!ImGui::DockBuilderGetNode(dockspaceID))
224 {
225
226 ImGui::DockBuilderRemoveNode(dockspaceID);
227 ImGui::DockBuilderAddNode(dockspaceID, ImGuiDockNodeFlags_DockSpace);
228
229 ImGuiID dock_main_id = dockspaceID;
230
231
232 ImGuiID id_left = ImGui::DockBuilderSplitNode(dock_main_id, ImGuiDir_Left, 0.2f, nullptr, &dock_main_id);
233 ImGui::DockBuilderDockWindow(side ==
Side::Left ?
"Docking Space" :
"Dock_left", id_left);
234
235 ImGuiID id_right = ImGui::DockBuilderSplitNode(dock_main_id, ImGuiDir_Right, 0.2f, nullptr, &dock_main_id);
236 ImGui::DockBuilderDockWindow(side ==
Side::Right ?
"Docking Space" :
"Dock_right", id_right);
237
238 ImGuiID id_up = ImGui::DockBuilderSplitNode(dock_main_id, ImGuiDir_Up, 0.2f, nullptr, &dock_main_id);
239 ImGui::DockBuilderDockWindow(side ==
Side::Up ?
"Docking Space" :
"Dock_up", id_up);
240
241 ImGuiID id_down = ImGui::DockBuilderSplitNode(dock_main_id, ImGuiDir_Down, 0.2f, nullptr, &dock_main_id);
242 ImGui::DockBuilderDockWindow(side ==
Side::Down ?
"Docking Space" :
"Dock_down", id_down);
243
244 ImGui::DockBuilderDockWindow(side ==
Side::Scene ?
"Docking Space" :
"Scene", dock_main_id);
245
246 ImGui::DockBuilderFinish(dock_main_id);
247 }
248
249
250 ImVec4 col = ImGui::GetStyleColorVec4(ImGuiCol_WindowBg);
251 ImGui::PushStyleColor(ImGuiCol_WindowBg, ImVec4(col.x, col.y, col.z, alpha));
252
253 ImGui::DockSpace(dockspaceID, ImVec2(0.0f, 0.0f), dockspaceFlags);
254 ImGui::PopStyleColor();
255 ImGui::End();
256 }
#define SPICES_PROFILE_ZONE