using System;
using Sirenix.OdinInspector;
using SLSUtilities.Feedback;
using UnityEngine;
namespace Cielonos.MainGame.Effects.Feedback
{
///
/// 黑白闪反馈动作,通过 StrobeFlashShakeEvent 触发 StrobeFlashShaker。
///
[Serializable]
[FeedbackActionColor(1.0f, 0.9f, 0.3f)]
public class StrobeFlashAction : PostprocessingActionBase
{
public override string DisplayName => "Strobe Flash";
///
/// 是否修改频率和颜色参数。
///
[TitleGroup("闪烁设置")]
[LabelText("修改额外参数")]
public bool modifyExtra;
[ShowIf("modifyExtra")]
[LabelText("频率曲线")]
public FloatCurveChannel frequencyCurve = FloatCurveChannel.CreateDefault(remapMax: 15f);
[ShowIf("modifyExtra")]
[LabelText("高颜色")]
public ColorCurveChannel colorHigh = ColorCurveChannel.CreateDefault();
[ShowIf("modifyExtra")]
[LabelText("低颜色")]
public ColorCurveChannel colorLow = ColorCurveChannel.CreateDefault();
protected override void TriggerEvent(FeedbackContext context)
{
StrobeFlashShakeEvent.Trigger(
context,
context.duration,
modifyExtra,
frequencyCurve,
colorHigh,
colorLow
);
}
protected override void StopEvent(FeedbackContext context)
{
StrobeFlashShakeEvent.Trigger(context, 0f, stop: true);
}
public override bool Validate(out string error)
{
error = null;
return true;
}
}
}