You've already forked taptap2024_GJ_chidouren
41 lines
1.4 KiB
C#
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
|
|
|
|
} |