editor: centralize engine runtime access

This commit is contained in:
2026-04-28 17:23:10 +08:00
parent 23aab98a09
commit 357dc136fe
36 changed files with 337 additions and 102 deletions

View File

@@ -1,8 +1,8 @@
#include "Viewport/SceneViewportRenderService.h"
#include "Engine/EditorEngineServices.h"
#include "Viewport/ViewportObjectIdPicker.h"
#include <XCEngine/Rendering/Picking/RenderObjectIdRegistry.h>
#include <XCEngine/Rendering/Execution/SceneRenderer.h>
#include <XCEngine/Scene/Scene.h>
@@ -53,13 +53,16 @@ SceneViewportRenderService::GetViewportResourceRequirements() {
}
void SceneViewportRenderService::Initialize(
const SceneViewportShaderPaths& shaderPaths) {
m_renderPassBundle.Initialize(shaderPaths);
const SceneViewportShaderPaths& shaderPaths,
EditorEngineServices& engineServices) {
m_engineServices = &engineServices;
m_renderPassBundle.Initialize(shaderPaths, engineServices);
}
void SceneViewportRenderService::Shutdown() {
m_renderRequest = {};
m_renderPassBundle.Shutdown();
m_engineServices = nullptr;
m_sceneRenderer.reset();
m_device = nullptr;
m_lastTargets = nullptr;
@@ -211,10 +214,10 @@ ViewportObjectIdPickResult SceneViewportRenderService::PickObject(
}
std::uint64_t runtimeObjectId = 0u;
if (!::XCEngine::Rendering::RenderObjectIdRegistry::Get()
.TryResolveRuntimeObjectId(
result.renderObjectId,
runtimeObjectId)) {
if (m_engineServices == nullptr ||
!m_engineServices->TryResolveRenderObjectId(
result.renderObjectId,
runtimeObjectId)) {
return result;
}