using System; using UnityEngine.Serialization; namespace UnityEngine.Rendering.HighDefinition { public partial class HDAdditionalCameraData : IVersionable { /// /// Define migration versions of the HDAdditionalCameraData /// protected enum Version { /// Version Step. None, /// Version Step. First, /// Version Step. SeparatePassThrough, /// Version Step. UpgradingFrameSettingsToStruct, /// Version Step. AddAfterPostProcessFrameSetting, /// Version Step. AddFrameSettingSpecularLighting, // Not used anymore /// Version Step. AddReflectionSettings, /// Version Step. AddCustomPostprocessAndCustomPass, /// Version Step. UpdateMSAA, /// Version Step. UpdatePhysicalCameraPropertiesToCore } [SerializeField, FormerlySerializedAs("version")] [ExcludeCopy] Version m_Version = MigrationDescription.LastVersion(); private static readonly MigrationDescription k_Migration = MigrationDescription.New( MigrationStep.New(Version.SeparatePassThrough, (HDAdditionalCameraData data) => { #pragma warning disable 618 // Type or member is obsolete switch ((int)data.m_ObsoleteRenderingPath) #pragma warning restore 618 { case 0: //former RenderingPath.UseGraphicsSettings data.fullscreenPassthrough = false; data.customRenderingSettings = false; break; case 1: //former RenderingPath.Custom data.fullscreenPassthrough = false; data.customRenderingSettings = true; break; case 2: //former RenderingPath.FullscreenPassthrough data.fullscreenPassthrough = true; data.customRenderingSettings = false; break; } }), MigrationStep.New(Version.UpgradingFrameSettingsToStruct, (HDAdditionalCameraData data) => { #pragma warning disable 618 // Type or member is obsolete if (data.m_ObsoleteFrameSettings != null) FrameSettings.MigrateFromClassVersion(ref data.m_ObsoleteFrameSettings, ref data.renderingPathCustomFrameSettings, ref data.renderingPathCustomFrameSettingsOverrideMask); #pragma warning restore 618 }), MigrationStep.New(Version.AddAfterPostProcessFrameSetting, (HDAdditionalCameraData data) => { FrameSettings.MigrateToAfterPostprocess(ref data.renderingPathCustomFrameSettings); }), MigrationStep.New(Version.AddReflectionSettings, (HDAdditionalCameraData data) => FrameSettings.MigrateToDefaultReflectionSettings(ref data.renderingPathCustomFrameSettings) ), MigrationStep.New(Version.AddCustomPostprocessAndCustomPass, (HDAdditionalCameraData data) => { FrameSettings.MigrateToCustomPostprocessAndCustomPass(ref data.renderingPathCustomFrameSettings); }), MigrationStep.New(Version.UpdateMSAA, (HDAdditionalCameraData data) => { FrameSettings.MigrateMSAA(ref data.renderingPathCustomFrameSettings, ref data.renderingPathCustomFrameSettingsOverrideMask); }), MigrationStep.New(Version.UpdatePhysicalCameraPropertiesToCore, (HDAdditionalCameraData data) => { var camera = data.GetComponent(); #pragma warning disable CS0618 // Type or member is obsolete var physicalProps = data.physicalParameters; #pragma warning restore CS0618 if (camera != null) { camera.iso = physicalProps.iso; camera.shutterSpeed = physicalProps.shutterSpeed; camera.aperture = physicalProps.aperture; camera.focusDistance = physicalProps.focusDistance; camera.bladeCount = physicalProps.bladeCount; camera.curvature = physicalProps.curvature; camera.barrelClipping = physicalProps.barrelClipping; camera.anamorphism = physicalProps.anamorphism; } }) ); Version IVersionable.version { get => m_Version; set => m_Version = value; } void Awake() => k_Migration.Migrate(this); #pragma warning disable 649 // Field never assigned [SerializeField, FormerlySerializedAs("renderingPath"), Obsolete("For Data Migration. #from(2021.1)")] [ExcludeCopy] int m_ObsoleteRenderingPath; [SerializeField] [FormerlySerializedAs("serializedFrameSettings"), FormerlySerializedAs("m_FrameSettings"), Obsolete("For Data Migration. #from(2021.1)")] [ExcludeCopy] ObsoleteFrameSettings m_ObsoleteFrameSettings; #pragma warning restore 649 } }