| 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); |
nothing calls this directly
no test coverage detected