refactor(srp): introduce scriptableobject render asset substrate

This commit is contained in:
2026-04-21 20:25:05 +08:00
parent e527ca4e3a
commit f3be86a52b
7 changed files with 171 additions and 3 deletions

View File

@@ -2,7 +2,8 @@ using XCEngine;
namespace XCEngine.Rendering
{
public abstract class RenderPipelineAsset : Object
public abstract class RenderPipelineAsset
: ScriptableObject
{
protected RenderPipelineAsset()
{

View File

@@ -0,0 +1,45 @@
using System;
using System.Reflection;
namespace XCEngine
{
public abstract class ScriptableObject : Object
{
protected ScriptableObject()
{
}
public static T CreateInstance<T>()
where T : ScriptableObject
{
return CreateInstance(typeof(T)) as T;
}
public static ScriptableObject CreateInstance(
Type scriptableObjectType)
{
if (scriptableObjectType == null ||
!typeof(ScriptableObject)
.IsAssignableFrom(scriptableObjectType))
{
return null;
}
try
{
return Activator.CreateInstance(
scriptableObjectType,
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.NonPublic,
binder: null,
args: Array.Empty<object>(),
culture: null) as ScriptableObject;
}
catch
{
return null;
}
}
}
}