| 632 | |
| 633 | ImVec2 LastSize = ImVec2(); |
| 634 | void EditorInterface::DrawViewport() |
| 635 | { |
| 636 | ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0)); |
| 637 | std::string name = ICON_FA_GAMEPAD + std::string(" Scene"); |
| 638 | ImGuiWindowClass window_class; |
| 639 | //window_class.DockNodeFlagsOverrideSet = ImGuiDockNodeFlags_NoTabBar; |
| 640 | //ImGui::SetNextWindowClass(&window_class); |
| 641 | |
| 642 | if (ImGui::Begin(name.c_str(), 0, ImGuiWindowFlags_NoDecoration)) |
| 643 | { |
| 644 | ImGui::PopStyleVar(); |
| 645 | |
| 646 | Overlay(); |
| 647 | ImGuizmo::BeginFrame(); |
| 648 | |
| 649 | ImGuizmo::SetOrthographic(false); |
| 650 | ImVec2 regionAvail = ImGui::GetContentRegionAvail(); |
| 651 | Vector2 viewportPanelSize = glm::vec2(regionAvail.x, regionAvail.y); |
| 652 | |
| 653 | // This is important for make UI mouse coord relative to viewport |
| 654 | Input::SetViewportDimensions(m_ViewportPos, viewportPanelSize); |
| 655 | |
| 656 | Ref<FrameBuffer> framebuffer = Engine::GetCurrentWindow()->GetFrameBuffer(); |
| 657 | if (framebuffer->GetSize() != viewportPanelSize * Engine::GetProject()->Settings.ResolutionScale) |
| 658 | framebuffer->QueueResize(viewportPanelSize * Engine::GetProject()->Settings.ResolutionScale); |
| 659 | |
| 660 | Ref<Texture> texture = framebuffer->GetTexture(); |
| 661 | VkDescriptorSet textureDesc = VkRenderer::Get().DrawImage->GetImGuiDescriptorSet(); |
| 662 | if (SelectedViewport == 1) |
| 663 | { |
| 664 | //pipeline.GetRenderPass("Shadow").GetDepthAttachment().Image->TransitionLayout(VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); |
| 665 | //textureDesc = pipeline.GetRenderPass("Shadow").GetDepthAttachment().Image->GetImGuiDescriptorSet(); |
| 666 | texture = Engine::GetCurrentScene()->m_SceneRenderer->GetGBuffer().GetTexture(0); |
| 667 | } |
| 668 | else if (SelectedViewport == 2) |
| 669 | { |
| 670 | //textureDesc = pipeline.GetRenderPass("GBuffer").GetAttachment("Normal").Image->GetImGuiDescriptorSet(); |
| 671 | //texture = Engine::GetCurrentScene()->m_SceneRenderer->GetGBuffer().GetTexture(GL_COLOR_ATTACHMENT1); |
| 672 | } |
| 673 | else if (SelectedViewport == 3) |
| 674 | { |
| 675 | //textureDesc = pipeline.GetRenderPass("GBuffer").GetDepthAttachment().Image->GetImGuiDescriptorSet(); |
| 676 | //texture = Engine::GetCurrentScene()->m_SceneRenderer->GetScaledDepthTexture(); |
| 677 | } |
| 678 | else if (SelectedViewport == 4) |
| 679 | { |
| 680 | //textureDesc = pipeline.GetRenderPass("GBuffer").GetAttachment("Material").Image->GetImGuiDescriptorSet(); |
| 681 | //texture = Engine::GetCurrentScene()->m_SceneRenderer->GetVelocityTexture(); |
| 682 | } |
| 683 | |
| 684 | ImVec2 imagePos = ImGui::GetWindowPos() + ImGui::GetCursorPos(); |
| 685 | Input::SetEditorViewportSize(m_ViewportPos, viewportPanelSize); |
| 686 | ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0)); |
| 687 | m_ViewportPos = { imagePos.x, imagePos.y }; |
| 688 | ImGui::Image(textureDesc, regionAvail, {0, 1}, {1, 0}); |
| 689 | ImGui::PopStyleVar(); |
| 690 | |
| 691 | const Vector2& mousePos = Input::GetMousePosition(); |
nothing calls this directly
no test coverage detected