Tighten managed SRP asset materialization

This commit is contained in:
2026-04-28 01:57:01 +08:00
parent 4810505af4
commit cadababab5
3 changed files with 68 additions and 35 deletions

View File

@@ -3013,6 +3013,13 @@ bool MonoManagedRenderPipelineAssetRuntime::EnsureManagedAsset() const {
return m_ownsManagedAssetHandle;
}
if (m_descriptor.HasAssetRef()) {
m_runtime->SetError(
"Managed render pipeline asset selected by AssetRef has no serialized asset graph; refusing class-default materialization: " +
m_descriptor.GetFullName() + ".");
return false;
}
MonoClass* assetClass = nullptr;
if (!m_runtime->ResolveManagedClass(
m_descriptor.assemblyName,
@@ -9063,27 +9070,10 @@ bool MonoScriptRuntime::TryEnsureManagedRenderPipelineAssetHandle(
return true;
}
MonoClass* assetClass = nullptr;
if (!ResolveManagedClass(
ioDescriptor.assemblyName,
ioDescriptor.namespaceName,
ioDescriptor.className,
assetClass) ||
assetClass == nullptr) {
return false;
}
if (!IsMonoClassOrSubclass(
assetClass,
m_scriptableRenderPipelineAssetClass)) {
SetError(
"Managed render pipeline asset must derive from ScriptableRenderPipelineAsset: " +
ioDescriptor.GetFullName() + ".");
return false;
}
return CreateExternalManagedObject(assetClass, ioDescriptor.managedAssetHandle) &&
ioDescriptor.managedAssetHandle != 0u;
SetError(
"Configured managed render pipeline asset has no serialized asset graph; refusing GraphicsSettings class-default materialization: " +
ioDescriptor.GetFullName() + ".");
return false;
}
void MonoScriptRuntime::DestroyExternalManagedObject(uint32_t gcHandle) {