2021-09-09 20:42:29 -04:00

90 lines
4.0 KiB
C#

using System;
using UnityEngine.Serialization;
namespace UnityEngine.Rendering.HighDefinition
{
public partial class HDAdditionalCameraData : IVersionable<HDAdditionalCameraData.Version>
{
/// <summary>
/// Define migration versions of the HDAdditionalCameraData
/// </summary>
protected enum Version
{
/// <summary>Version Step.</summary>
None,
/// <summary>Version Step.</summary>
First,
/// <summary>Version Step.</summary>
SeparatePassThrough,
/// <summary>Version Step.</summary>
UpgradingFrameSettingsToStruct,
/// <summary>Version Step.</summary>
AddAfterPostProcessFrameSetting,
/// <summary>Version Step.</summary>
AddFrameSettingSpecularLighting, // Not used anymore
/// <summary>Version Step.</summary>
AddReflectionSettings,
/// <summary>Version Step.</summary>
AddCustomPostprocessAndCustomPass,
}
[SerializeField, FormerlySerializedAs("version")]
Version m_Version = MigrationDescription.LastVersion<Version>();
static readonly MigrationDescription<Version, HDAdditionalCameraData> 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);
})
);
Version IVersionable<Version>.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")]
int m_ObsoleteRenderingPath;
[SerializeField]
[FormerlySerializedAs("serializedFrameSettings"), FormerlySerializedAs("m_FrameSettings")]
#pragma warning disable 618 // Type or member is obsolete
ObsoleteFrameSettings m_ObsoleteFrameSettings;
#pragma warning restore 618
#pragma warning restore 649
}
}