MCPcopy Create free account
hub / github.com/BoomingTech/Piccolo / showEditorMenu

Method showEditorMenu

engine/source/editor/source/editor_ui.cpp:277–391  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

275 }
276
277 void EditorUI::showEditorMenu(bool* p_open)
278 {
279 ImGuiDockNodeFlags dock_flags = ImGuiDockNodeFlags_DockSpace;
280 ImGuiWindowFlags window_flags = ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoTitleBar |
281 ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize |
282 ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoBackground |
283 ImGuiConfigFlags_NoMouseCursorChange | ImGuiWindowFlags_NoBringToFrontOnFocus;
284
285 const ImGuiViewport* main_viewport = ImGui::GetMainViewport();
286 ImGui::SetNextWindowPos(main_viewport->WorkPos, ImGuiCond_Always);
287 std::array<int, 2> window_size = g_editor_global_context.m_window_system->getWindowSize();
288 ImGui::SetNextWindowSize(ImVec2((float)window_size[0], (float)window_size[1]), ImGuiCond_Always);
289
290 ImGui::SetNextWindowViewport(main_viewport->ID);
291
292 ImGui::Begin("Editor menu", p_open, window_flags);
293
294 ImGuiID main_docking_id = ImGui::GetID("Main Docking");
295 if (ImGui::DockBuilderGetNode(main_docking_id) == nullptr)
296 {
297 ImGui::DockBuilderRemoveNode(main_docking_id);
298
299 ImGui::DockBuilderAddNode(main_docking_id, dock_flags);
300 ImGui::DockBuilderSetNodePos(main_docking_id,
301 ImVec2(main_viewport->WorkPos.x, main_viewport->WorkPos.y + 18.0f));
302 ImGui::DockBuilderSetNodeSize(main_docking_id,
303 ImVec2((float)window_size[0], (float)window_size[1] - 18.0f));
304
305 ImGuiID center = main_docking_id;
306 ImGuiID left;
307 ImGuiID right = ImGui::DockBuilderSplitNode(center, ImGuiDir_Right, 0.25f, nullptr, &left);
308
309 ImGuiID left_other;
310 ImGuiID left_file_content = ImGui::DockBuilderSplitNode(left, ImGuiDir_Down, 0.30f, nullptr, &left_other);
311
312 ImGuiID left_game_engine;
313 ImGuiID left_asset =
314 ImGui::DockBuilderSplitNode(left_other, ImGuiDir_Left, 0.30f, nullptr, &left_game_engine);
315
316 ImGui::DockBuilderDockWindow("World Objects", left_asset);
317 ImGui::DockBuilderDockWindow("Components Details", right);
318 ImGui::DockBuilderDockWindow("File Content", left_file_content);
319 ImGui::DockBuilderDockWindow("Game Engine", left_game_engine);
320
321 ImGui::DockBuilderFinish(main_docking_id);
322 }
323
324 ImGui::DockSpace(main_docking_id);
325
326 if (ImGui::BeginMenuBar())
327 {
328 if (ImGui::BeginMenu("Menu"))
329 {
330 if (ImGui::MenuItem("Reload Current Level"))
331 {
332 g_runtime_global_context.m_world_manager->reloadCurrentLevel();
333 g_runtime_global_context.m_render_system->clearForLevelReloading();
334 g_editor_global_context.m_scene_manager->onGObjectSelected(k_invalid_gobject_id);

Callers

nothing calls this directly

Calls 7

ImVec2Function · 0.85
getWindowSizeMethod · 0.80
reloadCurrentLevelMethod · 0.80
onGObjectSelectedMethod · 0.80
saveCurrentLevelMethod · 0.80
shutdownEngineMethod · 0.80

Tested by

no test coverage detected