Fix assert in LyShine when unloading a level (#6260)

* Fix assert in LyShine when unloading a level

Signed-off-by: abrmich <abrmich@amazon.com>

* Remove use of iter now that it's no longer used

Signed-off-by: abrmich <abrmich@amazon.com>
monroegm-disable-blank-issue-2
michabr 4 years ago committed by GitHub
parent 76e09a36d9
commit ea33d792f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -629,23 +629,23 @@ void UiCanvasManager::RenderLoadedCanvases()
////////////////////////////////////////////////////////////////////////////////////////////////////
void UiCanvasManager::DestroyLoadedCanvases(bool keepCrossLevelCanvases)
{
// Delete all the canvases loaded in game (but not loaded in editor)
for (auto iter = m_loadedCanvases.begin(); iter != m_loadedCanvases.end(); ++iter)
// Find all the canvases loaded in game (but not loaded in editor) that need destroying
AZStd::vector<AZ::EntityId> canvasesToUnload;
canvasesToUnload.reserve(m_loadedCanvases.size());
for (auto canvas : m_loadedCanvases)
{
auto canvas = *iter;
if (!(keepCrossLevelCanvases && canvas->GetKeepLoadedOnLevelUnload()))
{
// no longer used by game so delete the canvas
delete canvas->GetEntity();
*iter = nullptr; // mark for removal from container
canvasesToUnload.push_back(canvas->GetEntityId());
}
}
// now remove the nullptr entries
m_loadedCanvases.erase(
std::remove(m_loadedCanvases.begin(), m_loadedCanvases.end(), nullptr),
m_loadedCanvases.end());
// Unload the canvases. This will also send the OnCanvasUnloaded notification which
// ensures that components such as UiCanvasAsserRefComponent can clean up properly
for (auto canvasEntityId : canvasesToUnload)
{
UnloadCanvas(canvasEntityId);
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////

Loading…
Cancel
Save