using System; using XCEngine; using XCEngine.Rendering; namespace XCEngine.Rendering.Universal { public class UniversalRendererData : ScriptableRendererData { public UniversalMainSceneData mainScene; public ShadowCasterBlockData shadowCaster; public DepthPrepassBlockData depthPrepass; public UniversalRendererData() : this(true) { } protected UniversalRendererData( bool initializeDefaultRendererFeatures) { mainScene = UniversalMainSceneData.CreateDefault(); shadowCaster = ShadowCasterBlockData.CreateDefault(); depthPrepass = DepthPrepassBlockData.CreateDefault(); if (initializeDefaultRendererFeatures) { ResetRendererFeaturesToDefault(); } } protected override ScriptableRenderer CreateRenderer() { return new UniversalRenderer(this); } protected override ScriptableRendererFeature[] CreateDefaultRendererFeatures() { return UniversalDefaultRendererFeatureFactory .CreateDefaultRendererFeatures(); } internal UniversalMainSceneData GetMainSceneInstance() { if (mainScene == null) { mainScene = UniversalMainSceneData.CreateDefault(); } return mainScene; } internal ShadowCasterBlockData GetShadowCasterBlockInstance() { if (shadowCaster == null) { shadowCaster = ShadowCasterBlockData.CreateDefault(); } return shadowCaster; } internal DepthPrepassBlockData GetDepthPrepassBlockInstance() { if (depthPrepass == null) { depthPrepass = DepthPrepassBlockData.CreateDefault(); } return depthPrepass; } } }