From 8b5f532e306a174ade34eae4c3edae258dc7d252 Mon Sep 17 00:00:00 2001 From: Chris Galvan Date: Tue, 25 Jan 2022 14:25:32 -0600 Subject: [PATCH 1/2] Disable render pipeline for EditorViewportWidget until a level has been loaded Signed-off-by: Chris Galvan --- Code/Editor/EditorViewportWidget.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Code/Editor/EditorViewportWidget.cpp b/Code/Editor/EditorViewportWidget.cpp index a8180bcace..6ba62604e8 100644 --- a/Code/Editor/EditorViewportWidget.cpp +++ b/Code/Editor/EditorViewportWidget.cpp @@ -89,6 +89,7 @@ #include // Atom +#include #include #include #include @@ -584,7 +585,7 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event) m_renderViewport->SetScene(nullptr); break; - case eNotify_OnEndSceneOpen: + case eNotify_OnEndLoad: UpdateScene(); SetDefaultCamera(); break; @@ -2324,7 +2325,22 @@ void EditorViewportWidget::UpdateScene() { AZ::RPI::SceneNotificationBus::Handler::BusDisconnect(); m_renderViewport->SetScene(mainScene); - AZ::RPI::SceneNotificationBus::Handler::BusConnect(m_renderViewport->GetViewportContext()->GetRenderScene()->GetId()); + auto viewportContext = m_renderViewport->GetViewportContext(); + AZ::RPI::SceneNotificationBus::Handler::BusConnect(viewportContext->GetRenderScene()->GetId()); + + // Don't enable the render pipeline until a level has been loaded + auto renderPipeline = viewportContext->GetCurrentPipeline(); + if (renderPipeline) + { + if (GetIEditor()->IsLevelLoaded()) + { + renderPipeline->AddToRenderTick(); + } + else + { + renderPipeline->RemoveFromRenderTick(); + } + } } } } From 6e05ac678d475fc93925ba51be8df82aa96ff7a4 Mon Sep 17 00:00:00 2001 From: Chris Galvan Date: Tue, 25 Jan 2022 16:46:49 -0600 Subject: [PATCH 2/2] Hide the RenderViewportWidget when there is no level loaded so the gradient background is visible Signed-off-by: Chris Galvan --- Code/Editor/EditorViewportWidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Code/Editor/EditorViewportWidget.cpp b/Code/Editor/EditorViewportWidget.cpp index 6ba62604e8..9a9e9f5ad3 100644 --- a/Code/Editor/EditorViewportWidget.cpp +++ b/Code/Editor/EditorViewportWidget.cpp @@ -2329,15 +2329,19 @@ void EditorViewportWidget::UpdateScene() AZ::RPI::SceneNotificationBus::Handler::BusConnect(viewportContext->GetRenderScene()->GetId()); // Don't enable the render pipeline until a level has been loaded + // Also show/hide the RenderViewportWidget accordingly so that we get the + // expected gradient background when no level is loaded auto renderPipeline = viewportContext->GetCurrentPipeline(); if (renderPipeline) { if (GetIEditor()->IsLevelLoaded()) { + m_renderViewport->show(); renderPipeline->AddToRenderTick(); } else { + m_renderViewport->hide(); renderPipeline->RemoveFromRenderTick(); } }