[ATOM-15464] Fixing Material Editor crash on shutdown
This commit is contained in:
+19
-22
@@ -32,32 +32,29 @@ namespace AZ
|
||||
|
||||
void ReleaseResourcesStep::Start()
|
||||
{
|
||||
m_context->GetData()->m_defaultMaterialAsset.Release();
|
||||
m_context->GetData()->m_defaultModelAsset.Release();
|
||||
m_context->GetData()->m_materialAsset.Release();
|
||||
m_context->GetData()->m_modelAsset.Release();
|
||||
auto data = m_context->GetData();
|
||||
|
||||
data->m_defaultMaterialAsset.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::Events::DestroyEntity, m_context->GetData()->m_modelEntity);
|
||||
m_context->GetData()->m_modelEntity = nullptr;
|
||||
AzFramework::EntityContextRequestBus::Event(data->m_entityContext->GetContextId(),
|
||||
&AzFramework::EntityContextRequestBus::Events::DestroyEntity, data->m_modelEntity);
|
||||
data->m_modelEntity = nullptr;
|
||||
}
|
||||
|
||||
m_context->GetData()->m_frameworkScene->UnsetSubsystem<RPI::Scene>();
|
||||
|
||||
m_context->GetData()->m_scene->Deactivate();
|
||||
m_context->GetData()->m_scene->RemoveRenderPipeline(m_context->GetData()->m_renderPipeline->GetId());
|
||||
RPI::RPISystemInterface::Get()->UnregisterScene(m_context->GetData()->m_scene);
|
||||
|
||||
auto sceneSystem = AzFramework::SceneSystemInterface::Get();
|
||||
AZ_Assert(sceneSystem, "Thumbnail system failed to get scene system implementation.");
|
||||
[[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;
|
||||
data->m_scene->Deactivate();
|
||||
data->m_scene->RemoveRenderPipeline(data->m_renderPipeline->GetId());
|
||||
RPI::RPISystemInterface::Get()->UnregisterScene(data->m_scene);
|
||||
data->m_frameworkScene->UnsetSubsystem(data->m_scene);
|
||||
data->m_frameworkScene->UnsetSubsystem(data->m_entityContext.get());
|
||||
data->m_scene = nullptr;
|
||||
data->m_frameworkScene = nullptr;
|
||||
data->m_renderPipeline = nullptr;
|
||||
}
|
||||
} // namespace Thumbnails
|
||||
} // namespace LyIntegration
|
||||
|
||||
Reference in New Issue
Block a user