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