Files
ichni_Official/Assets/Scripts/Game/GameElements/GeneralEffects/RadialBlurEffect.cs

98 lines
3.2 KiB
C#
Raw Normal View History

2025-08-11 14:04:06 -04:00
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
namespace Ichni.RhythmGame
{
public class RadialBlurEffect : EffectBase
{
2025-08-27 21:45:18 -04:00
private readonly PostProcessingController nbController;
2025-08-11 14:04:06 -04:00
public float duration;
public int sampleLevel;
public float position;
public float fadeRange;
public float peakIntensity;
public AnimationCurve intensityCurve;
public RadialBlurEffect(float duration, int sampleLevel, float position, float fadeRange, float peakIntensity, AnimationCurve intensityCurve)
{
this.effectTime = duration;
this.duration = duration;
this.sampleLevel = sampleLevel;
this.position = position;
this.fadeRange = fadeRange;
this.peakIntensity = peakIntensity;
this.intensityCurve = intensityCurve;
this.nbController = GameManager.instance.postProcessingManager.nbController;
}
public override void Recover()
{
nbController.radialBlurToggle = false;
}
public override void Disrupt()
{
nbController.radialBlurToggle = false;
}
public override void PreExecute()
{
nbController.radialBlurToggle = true;
nbController.radialBlurSampleCount = sampleLevel;
nbController.radialBlurPos = position;
nbController.radialBlurRange = fadeRange;
}
public override void Execute()
{
float intensity = Mathf.Lerp(0, peakIntensity, intensityCurve.Evaluate(effectProgressPercent));
nbController.radialBlurIntensity = intensity;
}
public override void Adjust()
{
nbController.radialBlurToggle = false;
}
public override EffectBase_BM ConvertToBM()
{
return new RadialBlurEffect_BM(duration, sampleLevel, position, fadeRange, peakIntensity, intensityCurve);
}
}
namespace Beatmap
{
public class RadialBlurEffect_BM : EffectBase_BM
{
public float duration;
public int sampleLevel;
public float position;
public float fadeRange;
public float peakIntensity;
public AnimationCurve intensityCurve;
public RadialBlurEffect_BM(float duration, int sampleLevel, float position, float fadeRange, float peakIntensity, AnimationCurve intensityCurve)
{
this.effectTime = duration;
this.duration = duration;
this.sampleLevel = sampleLevel;
this.position = position;
this.fadeRange = fadeRange;
this.peakIntensity = peakIntensity;
this.intensityCurve = intensityCurve;
}
public override EffectBase ConvertToGameType(GameElement attachedGameElement)
{
return new RadialBlurEffect(duration, sampleLevel, position, fadeRange, peakIntensity, intensityCurve)
{
attachedGameElement = attachedGameElement,
};
}
}
}
}