Refactor editor window synchronization flow

This commit is contained in:
2026-04-26 00:19:58 +08:00
parent 12b71a319f
commit 5b6c46d382
32 changed files with 1787 additions and 320 deletions

View File

@@ -1,6 +1,7 @@
#include "Rendering/Pipelines/ManagedScriptableRenderPipelineAsset.h"
#include "Rendering/GraphicsSettingsState.h"
#include "Rendering/Internal/RenderPipelineFactory.h"
#include <utility>
@@ -42,7 +43,21 @@ ManagedScriptableRenderPipelineAsset::ResolveSharedPipelineBackendAsset() const
if (const std::shared_ptr<const ManagedRenderPipelineAssetRuntime> runtime =
ResolveManagedAssetRuntime();
runtime != nullptr) {
return runtime->GetSharedPipelineBackendAsset();
if (const std::shared_ptr<const RenderPipelineAsset> rendererAsset =
runtime->GetPipelineRendererAsset();
rendererAsset != nullptr) {
return rendererAsset;
}
switch (runtime->GetPipelineRendererAssetPolicy()) {
case ManagedPipelineRendererAssetPolicy::ExplicitAsset:
return runtime->GetSharedPipelineBackendAsset();
case ManagedPipelineRendererAssetPolicy::DefaultNativeBackend:
return Internal::CreateDefaultPipelineBackendAsset();
case ManagedPipelineRendererAssetPolicy::Unspecified:
default:
return nullptr;
}
}
return nullptr;

View File

@@ -1641,7 +1641,9 @@ public:
bool TryGetDefaultFinalColorSettings(
Rendering::FinalColorSettings& settings) const override;
std::shared_ptr<const Rendering::RenderPipelineAsset>
GetSharedPipelineBackendAsset() const override;
GetPipelineRendererAsset() const override;
Rendering::Pipelines::ManagedPipelineRendererAssetPolicy
GetPipelineRendererAssetPolicy() const override;
MonoScriptRuntime* GetRuntime() const {
return m_runtime;
@@ -2044,7 +2046,7 @@ private:
const std::shared_ptr<const Rendering::RenderPipelineAsset>
sharedPipelineBackendAsset =
m_assetRuntime != nullptr
? m_assetRuntime->GetSharedPipelineBackendAsset()
? m_assetRuntime->GetPipelineRendererAsset()
: nullptr;
if (sharedPipelineBackendAsset == nullptr) {
return nullptr;
@@ -2318,7 +2320,7 @@ bool MonoManagedRenderPipelineAssetRuntime::TryGetDefaultFinalColorSettings(
}
std::shared_ptr<const Rendering::RenderPipelineAsset>
MonoManagedRenderPipelineAssetRuntime::GetSharedPipelineBackendAsset() const {
MonoManagedRenderPipelineAssetRuntime::GetPipelineRendererAsset() const {
if (!SyncManagedAssetRuntimeState()) {
return nullptr;
}
@@ -2332,11 +2334,16 @@ MonoManagedRenderPipelineAssetRuntime::GetSharedPipelineBackendAsset() const {
}
m_sharedPipelineBackendAssetResolved = true;
m_sharedPipelineBackendAsset =
Rendering::Internal::CreateDefaultPipelineBackendAsset();
return m_sharedPipelineBackendAsset;
}
Rendering::Pipelines::ManagedPipelineRendererAssetPolicy
MonoManagedRenderPipelineAssetRuntime::GetPipelineRendererAssetPolicy() const {
return EnsureManagedAsset()
? Rendering::Pipelines::ManagedPipelineRendererAssetPolicy::DefaultNativeBackend
: Rendering::Pipelines::ManagedPipelineRendererAssetPolicy::Unspecified;
}
bool MonoManagedRenderPipelineAssetRuntime::AcquireManagedPipelineHandle(
uint32_t& outPipelineHandle) const {
if (!SyncManagedAssetRuntimeState()) {