Fix ImGui rendering in-Editor

-Ensure ViewportContext rendertick notifications always fire
-Use viewport size to determine ImGui resolution, ensure OnViewportSizeChanged is always up-to-date for the default viewport context
This commit is contained in:
nvsickle
2021-04-20 14:36:11 -07:00
parent 5ea2240787
commit ba5e0170a2
5 changed files with 34 additions and 4 deletions
@@ -57,9 +57,14 @@ namespace AZ
return;
}
viewportData.context = viewportContext;
auto onSizeChanged = [contextName, viewportId](AzFramework::WindowSize size)
auto onSizeChanged = [this, viewportId](AzFramework::WindowSize size)
{
ViewportContextNotificationBus::Event(contextName, &ViewportContextNotificationBus::Events::OnViewportSizeChanged, size);
// Ensure we emit OnViewportSizeChanged with the correct name.
auto viewportContext = this->GetViewportContextById(viewportId);
if (viewportContext)
{
ViewportContextNotificationBus::Event(viewportContext->GetName(), &ViewportContextNotificationBus::Events::OnViewportSizeChanged, size);
}
ViewportContextIdNotificationBus::Event(viewportId, &ViewportContextIdNotificationBus::Events::OnViewportSizeChanged, size);
};
viewportContext->m_name = contextName;
@@ -174,6 +179,8 @@ namespace AZ
GetOrCreateViewStackForContext(newContextName);
viewportContext->m_name = newContextName;
UpdateViewForContext(newContextName);
// Ensure anyone listening on per-name viewport size updates gets notified.
ViewportContextNotificationBus::Event(newContextName, &ViewportContextNotificationBus::Events::OnViewportSizeChanged, viewportContext->GetViewportSize());
}
void ViewportContextManager::EnumerateViewportContexts(AZStd::function<void(ViewportContextPtr)> visitorFunction)