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; } } }