[ATOM-15464] Fixing Material Editor crash on shutdown

This commit is contained in:
mnaumov
2021-05-26 06:29:09 -07:00
parent a1514eb0b5
commit 09c5bb8d65
@@ -32,32 +32,29 @@ namespace AZ
void ReleaseResourcesStep::Start() void ReleaseResourcesStep::Start()
{ {
m_context->GetData()->m_defaultMaterialAsset.Release(); auto data = m_context->GetData();
m_context->GetData()->m_defaultModelAsset.Release();
m_context->GetData()->m_materialAsset.Release(); data->m_defaultMaterialAsset.Release();
m_context->GetData()->m_modelAsset.Release(); data->m_defaultModelAsset.Release();
data->m_materialAsset.Release();
data->m_modelAsset.Release();
data->m_lightingPresetAsset.Release();
if (m_context->GetData()->m_modelEntity) if (data->m_modelEntity)
{ {
AzFramework::EntityContextRequestBus::Event(m_context->GetData()->m_entityContext->GetContextId(), AzFramework::EntityContextRequestBus::Event(data->m_entityContext->GetContextId(),
&AzFramework::EntityContextRequestBus::Events::DestroyEntity, m_context->GetData()->m_modelEntity); &AzFramework::EntityContextRequestBus::Events::DestroyEntity, data->m_modelEntity);
m_context->GetData()->m_modelEntity = nullptr; data->m_modelEntity = nullptr;
} }
m_context->GetData()->m_frameworkScene->UnsetSubsystem<RPI::Scene>(); data->m_scene->Deactivate();
data->m_scene->RemoveRenderPipeline(data->m_renderPipeline->GetId());
m_context->GetData()->m_scene->Deactivate(); RPI::RPISystemInterface::Get()->UnregisterScene(data->m_scene);
m_context->GetData()->m_scene->RemoveRenderPipeline(m_context->GetData()->m_renderPipeline->GetId()); data->m_frameworkScene->UnsetSubsystem(data->m_scene);
RPI::RPISystemInterface::Get()->UnregisterScene(m_context->GetData()->m_scene); data->m_frameworkScene->UnsetSubsystem(data->m_entityContext.get());
data->m_scene = nullptr;
auto sceneSystem = AzFramework::SceneSystemInterface::Get(); data->m_frameworkScene = nullptr;
AZ_Assert(sceneSystem, "Thumbnail system failed to get scene system implementation."); data->m_renderPipeline = nullptr;
[[maybe_unused]] bool sceneRemovedSuccessfully = sceneSystem->RemoveScene(m_context->GetData()->m_sceneName);
AZ_Assert(
sceneRemovedSuccessfully, "Thumbnail system was unable to remove scene '%s' from the scene system.",
m_context->GetData()->m_sceneName.c_str());
m_context->GetData()->m_scene = nullptr;
m_context->GetData()->m_renderPipeline = nullptr;
} }
} // namespace Thumbnails } // namespace Thumbnails
} // namespace LyIntegration } // namespace LyIntegration