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

56 lines
2.1 KiB
C#

using System;
namespace UnityEngine.Rendering.HighDefinition
{
public partial struct DensityVolumeArtistParameters
{
/// <summary>Obsolete, do not use.</summary>
[Obsolete("Never worked correctly due to having engine working in percent. Will be removed soon.")]
public bool advancedFade => true;
internal void MigrateToFixUniformBlendDistanceToBeMetric()
{
//Note: At this revision, advanceMode boolean is obsolete and unusable anymore
if (!m_EditorAdvancedFade)
{
//Replicate old editor behavior of normal mode to keep scene intact
m_EditorAdvancedFade = true;
negativeFade = positiveFade = m_EditorUniformFade * Vector3.one;
m_EditorUniformFade = 0f;
}
//feed new variable to handle editor values
m_EditorPositiveFade = positiveFade;
m_EditorNegativeFade = negativeFade;
}
}
public partial class DensityVolume : IVersionable<DensityVolume.Version>
{
enum Version
{
First,
ScaleIndependent,
FixUniformBlendDistanceToBeMetric,
}
static readonly MigrationDescription<Version, DensityVolume> k_Migration = MigrationDescription.New(
MigrationStep.New(Version.ScaleIndependent, (DensityVolume data) =>
{
data.parameters.size = data.transform.lossyScale;
//missing migrated data.
//when migrated prior to this fix, density volumes have to be manually set on advance mode.
data.parameters.m_EditorAdvancedFade = true;
}),
MigrationStep.New(Version.FixUniformBlendDistanceToBeMetric, (DensityVolume data) => data.parameters.MigrateToFixUniformBlendDistanceToBeMetric())
);
[SerializeField]
Version m_Version = MigrationDescription.LastVersion<Version>();
Version IVersionable<Version>.version { get => m_Version; set => m_Version = value; }
void Awake() => k_Migration.Migrate(this);
}
}