namespace XCEngine { public sealed class RenderingData { internal RenderingData(CameraFrameStage stage) : this( stage, CameraData.Default, LightingData.Default, ShadowData.Default, EnvironmentData.Default, FinalColorData.Default, StageColorData.Default) { } internal RenderingData(ScriptableRenderContext context) : this( context != null ? context.stage : CameraFrameStage.MainScene, context != null ? context.cameraData : CameraData.Default, context != null ? context.lightingData : LightingData.Default, context != null ? context.shadowData : ShadowData.Default, context != null ? context.environmentData : EnvironmentData.Default, context != null ? context.finalColorData : FinalColorData.Default, context != null ? context.stageColorData : StageColorData.Default) { } private RenderingData( CameraFrameStage stage, CameraData cameraData, LightingData lightingData, ShadowData shadowData, EnvironmentData environmentData, FinalColorData finalColorData, StageColorData stageColorData) { this.stage = stage; this.cameraData = cameraData ?? CameraData.Default; this.lightingData = lightingData ?? LightingData.Default; this.shadowData = shadowData ?? ShadowData.Default; this.environmentData = environmentData ?? EnvironmentData.Default; this.finalColorData = finalColorData ?? FinalColorData.Default; this.stageColorData = stageColorData ?? StageColorData.Default; } public CameraFrameStage stage { get; } public CameraData cameraData { get; } public LightingData lightingData { get; } public ShadowData shadowData { get; } public EnvironmentData environmentData { get; } public FinalColorData finalColorData { get; } public StageColorData stageColorData { get; } public bool isMainSceneStage => stage == CameraFrameStage.MainScene; public bool isPostProcessStage => stage == CameraFrameStage.PostProcess; public bool isFinalOutputStage => stage == CameraFrameStage.FinalOutput; } }