Files
taptap2024_GJ_chidouren/Assets/Scripts/System/VolumeEffectUtils.cs
2024-10-16 00:03:41 +08:00

41 lines
1.4 KiB
C#

using Framework.Timer;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class VolumeEffectUtils : MonoBehaviour
{
public VolumeProfile volumeProfile;
#region ChromaticAberration Utils
private TimeHandler _aberrationHandler;
private float _aberrationBaseIntensity;
private float _aberrationTargetIntensity;
public void SetAberration(float intensity , float time)
{
this._aberrationHandler?.Kill();
this._aberrationTargetIntensity = intensity;
if (this.volumeProfile.TryGet(out ChromaticAberration aberration))
{
this._aberrationBaseIntensity = aberration.intensity.value;
aberration.active = this._aberrationBaseIntensity != 0 || this._aberrationTargetIntensity != 0;
this._aberrationHandler = GameUpdateMgr.Instance.CreateTimer(time , UpdateAberration , f =>
{
aberration.intensity.value = math.lerp(this._aberrationBaseIntensity , this._aberrationTargetIntensity , f);
});
}
}
private void UpdateAberration()
{
if (this.volumeProfile.TryGet(out ChromaticAberration aberration))
{
aberration.intensity.value = this._aberrationTargetIntensity;
aberration.active = aberration.intensity.value != 0;
}
}
#endregion
}