Widgets/BaseWidget: Fix background entity not being released

This commit is contained in:
SirLynix 2023-07-15 10:36:03 +02:00
parent 5e4c175395
commit 42ea4ebbfb
1 changed files with 7 additions and 4 deletions

View File

@ -88,9 +88,12 @@ namespace Nz
if (enable)
{
m_backgroundSprite = std::make_shared<Sprite>((m_backgroundColor.IsOpaque()) ? Widgets::Instance()->GetOpaqueMaterial() : Widgets::Instance()->GetTransparentMaterial());
m_backgroundSprite->SetColor(m_backgroundColor);
m_backgroundSprite->UpdateRenderLayer(m_baseRenderLayer);
if (!m_backgroundSprite)
{
m_backgroundSprite = std::make_shared<Sprite>((m_backgroundColor.IsOpaque()) ? Widgets::Instance()->GetOpaqueMaterial() : Widgets::Instance()->GetTransparentMaterial());
m_backgroundSprite->SetColor(m_backgroundColor);
m_backgroundSprite->UpdateRenderLayer(m_baseRenderLayer);
}
entt::entity backgroundEntity = CreateEntity();
m_registry->emplace<GraphicsComponent>(backgroundEntity).AttachRenderable(m_backgroundSprite, GetCanvas()->GetRenderMask());
@ -105,7 +108,7 @@ namespace Nz
assert(m_backgroundEntity);
DestroyEntity(*m_backgroundEntity);
m_backgroundSprite.reset();
m_backgroundEntity.reset();
}
OnRenderLayerUpdated(GetBaseRenderLayer());