Files
XCEngine/managed/XCEngine.ScriptCore/Rendering/Universal/UniversalRenderPipelineAsset.cs

76 lines
2.3 KiB
C#

using XCEngine;
using XCEngine.Rendering;
namespace XCEngine.Rendering.Universal
{
public class UniversalRenderPipelineAsset
: ScriptableRenderPipelineAsset
{
public ScriptableRendererData[] rendererDataList =
new ScriptableRendererData[]
{
new UniversalRendererData()
};
public int defaultRendererIndex = 0;
protected override ScriptableRenderPipeline CreatePipeline()
{
ScriptableRendererData resolvedRendererData =
ResolveDefaultRendererData();
return resolvedRendererData != null
? new UniversalRenderPipeline(resolvedRendererData)
: null;
}
protected override void ConfigureCameraRenderRequest(
CameraRenderRequestContext context)
{
ScriptableRendererData resolvedRendererData =
ResolveDefaultRendererData();
if (resolvedRendererData != null)
{
resolvedRendererData.ConfigureCameraRenderRequestInstance(
context);
}
}
protected override string GetPipelineRendererAssetKey()
{
ScriptableRendererData resolvedRendererData =
ResolveDefaultRendererData();
return resolvedRendererData != null
? resolvedRendererData.GetPipelineRendererAssetKeyInstance()
: string.Empty;
}
private ScriptableRendererData ResolveDefaultRendererData()
{
if (rendererDataList == null ||
rendererDataList.Length == 0)
{
rendererDataList =
new ScriptableRendererData[]
{
new UniversalRendererData()
};
defaultRendererIndex = 0;
}
if (defaultRendererIndex < 0 ||
defaultRendererIndex >= rendererDataList.Length)
{
defaultRendererIndex = 0;
}
if (rendererDataList[defaultRendererIndex] == null)
{
rendererDataList[defaultRendererIndex] =
new UniversalRendererData();
}
return rendererDataList[defaultRendererIndex];
}
}
}