refactor(editor): isolate engine service boundaries

This commit is contained in:
2026-04-29 03:19:46 +08:00
parent ef11651ec2
commit 313a571e43
60 changed files with 3804 additions and 2611 deletions

View File

@@ -1,6 +1,7 @@
#include "Viewport/SceneViewportRenderService.h"
#include "Engine/EditorEngineServices.h"
#include "Engine/EditorShaderProvider.h"
#include "Engine/SceneViewportEngineBridge.h"
#include "Viewport/ViewportObjectIdPicker.h"
#include <utility>
@@ -51,15 +52,16 @@ SceneViewportRenderService::GetViewportResourceRequirements() {
void SceneViewportRenderService::Initialize(
const SceneViewportShaderPaths& shaderPaths,
EditorEngineServices& engineServices) {
m_engineServices = &engineServices;
m_renderPassBundle.Initialize(shaderPaths, engineServices);
SceneViewportEngineBridge& engineBridge,
EditorShaderProvider& shaderProvider) {
m_engineBridge = &engineBridge;
m_renderPassBundle.Initialize(shaderPaths, shaderProvider);
}
void SceneViewportRenderService::Shutdown() {
m_renderRequest = {};
m_renderPassBundle.Shutdown();
m_engineServices = nullptr;
m_engineBridge = nullptr;
m_device = nullptr;
m_lastTargets = nullptr;
m_lastRenderContext = {};
@@ -103,8 +105,8 @@ ViewportRenderResult SceneViewportRenderService::Render(
BuildViewportColorSurface(targets);
::XCEngine::Rendering::CameraFramePlan framePlan = {};
const SceneViewportFramePlanBuildStatus buildStatus =
m_engineServices != nullptr
? m_engineServices->BuildSceneViewportFramePlan(
m_engineBridge != nullptr
? m_engineBridge->BuildSceneViewportFramePlan(
m_renderRequest,
renderContext,
surface,
@@ -139,8 +141,8 @@ ViewportRenderResult SceneViewportRenderService::Render(
SetStatusIfEmpty(result.statusText, renderPlan.warningStatusText);
}
if (m_engineServices == nullptr ||
!m_engineServices->RenderSceneViewportFramePlan(framePlan)) {
if (m_engineBridge == nullptr ||
!m_engineBridge->RenderSceneViewportFramePlan(framePlan)) {
return BuildFallbackResult(
"Scene renderer failed",
0.18f,
@@ -208,8 +210,8 @@ ViewportObjectIdPickResult SceneViewportRenderService::PickObject(
}
EditorSceneObjectId runtimeObjectId = kInvalidEditorSceneObjectId;
if (m_engineServices == nullptr ||
!m_engineServices->TryResolveActiveSceneRenderObjectId(
if (m_engineBridge == nullptr ||
!m_engineBridge->TryResolveActiveSceneRenderObjectId(
result.renderObjectId,
runtimeObjectId)) {
return result;