refactor(editor): isolate engine service boundaries
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
#include "ViewportHostService.h"
|
||||
|
||||
#include "Engine/EditorEngineServices.h"
|
||||
#include "Panels/EditorPanelIds.h"
|
||||
#include "Product/EditorProductManifest.h"
|
||||
#include "Viewport/SceneViewportResourcePaths.h"
|
||||
@@ -43,18 +42,20 @@ private:
|
||||
|
||||
} // namespace
|
||||
|
||||
ViewportHostService::ViewportHostService(EditorEngineServices* engineServices)
|
||||
: m_engineServices(engineServices) {}
|
||||
ViewportHostService::ViewportHostService() = default;
|
||||
|
||||
ViewportHostService::~ViewportHostService() = default;
|
||||
|
||||
void ViewportHostService::Initialize(
|
||||
const EditorRuntimePaths& runtimePaths,
|
||||
EditorEngineServices& engineServices) {
|
||||
m_engineServices = &engineServices;
|
||||
SceneViewportEngineBridge& sceneViewportEngineBridge,
|
||||
GameViewportEngineBridge& gameViewportEngineBridge,
|
||||
EditorShaderProvider& shaderProvider) {
|
||||
m_gameViewportRuntime.Initialize(gameViewportEngineBridge);
|
||||
m_sceneViewportRuntime.Initialize(
|
||||
BuildSceneViewportShaderPaths(runtimePaths),
|
||||
engineServices);
|
||||
sceneViewportEngineBridge,
|
||||
shaderProvider);
|
||||
m_placeholderRenderers.clear();
|
||||
for (const EditorProductPanelDescriptor& panel : GetEditorProductPanels()) {
|
||||
if (panel.presentationKind != UIEditorPanelPresentationKind::ViewportShell) {
|
||||
@@ -68,6 +69,12 @@ void ViewportHostService::Initialize(
|
||||
&m_sceneViewportRuntime,
|
||||
SceneViewportRenderService::GetViewportResourceRequirements());
|
||||
break;
|
||||
case EditorProductViewportRendererKind::Game:
|
||||
SetContentRenderer(
|
||||
panel.panelId,
|
||||
&m_gameViewportRuntime,
|
||||
GameViewportRenderService::GetViewportResourceRequirements());
|
||||
break;
|
||||
case EditorProductViewportRendererKind::Placeholder: {
|
||||
auto placeholder =
|
||||
std::make_unique<PlaceholderViewportContentRenderer>(
|
||||
@@ -122,6 +129,7 @@ void ViewportHostService::Shutdown() {
|
||||
}
|
||||
}
|
||||
m_placeholderRenderers.clear();
|
||||
m_gameViewportRuntime.Shutdown();
|
||||
m_sceneViewportRuntime.Shutdown();
|
||||
for (auto& [viewportId, entry] : m_entries) {
|
||||
DestroyViewportEntry(entry);
|
||||
@@ -131,7 +139,6 @@ void ViewportHostService::Shutdown() {
|
||||
m_windowRenderer = nullptr;
|
||||
m_device = nullptr;
|
||||
m_surfacePresentationEnabled = false;
|
||||
m_engineServices = nullptr;
|
||||
m_entries.clear();
|
||||
m_retiredTargetsBySlot.clear();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user