2026-04-18 13:57:19 -04:00
|
|
|
|
using System;
|
|
|
|
|
|
using Sirenix.OdinInspector;
|
|
|
|
|
|
using SLSUtilities.Feedback;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Cielonos.MainGame.Effects.Feedback
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 黑白闪反馈动作,通过 StrobeFlashShakeEvent 触发 StrobeFlashShaker。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[Serializable]
|
|
|
|
|
|
[FeedbackActionColor(1.0f, 0.9f, 0.3f)]
|
|
|
|
|
|
public class StrobeFlashAction : PostprocessingActionBase
|
|
|
|
|
|
{
|
|
|
|
|
|
public override string DisplayName => "Strobe Flash";
|
|
|
|
|
|
|
2026-04-30 07:06:38 -04:00
|
|
|
|
// ─── Frequency ───
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("频率设置")]
|
|
|
|
|
|
[LabelText("频率模式")]
|
|
|
|
|
|
public StrobeFrequencyMode frequencyMode = StrobeFrequencyMode.Constant;
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("频率设置")]
|
|
|
|
|
|
[ShowIf("@frequencyMode == StrobeFrequencyMode.Constant")]
|
|
|
|
|
|
[LabelText("固定频率")]
|
|
|
|
|
|
[Range(0f, 100f)]
|
|
|
|
|
|
public float constantFrequency = 15f;
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("频率设置")]
|
|
|
|
|
|
[ShowIf("@frequencyMode == StrobeFrequencyMode.Curve")]
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[LabelText("频率曲线")]
|
2026-04-30 07:06:38 -04:00
|
|
|
|
public FloatCurveChannel frequencyCurve = FloatCurveChannel.CreateDefault(remapMax: 30f);
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("频率设置")]
|
|
|
|
|
|
[ShowIf("@frequencyMode == StrobeFrequencyMode.Manual")]
|
|
|
|
|
|
[LabelText("手动曲线(Y >= 1 时翻转)")]
|
|
|
|
|
|
public AnimationCurve manualCurve = AnimationCurve.Constant(0f, 1f, 0f);
|
|
|
|
|
|
|
|
|
|
|
|
// ─── Color High ───
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[LabelText("修改高颜色")]
|
|
|
|
|
|
public bool modifyColorHigh;
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[ShowIf("modifyColorHigh")]
|
|
|
|
|
|
[LabelText("使用渐变色")]
|
|
|
|
|
|
public bool useColorHighGradient;
|
2026-04-18 13:57:19 -04:00
|
|
|
|
|
2026-04-30 07:06:38 -04:00
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[ShowIf("@modifyColorHigh && !useColorHighGradient")]
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[LabelText("高颜色")]
|
2026-04-30 07:06:38 -04:00
|
|
|
|
public Color colorHighConstant = Color.white;
|
2026-04-18 13:57:19 -04:00
|
|
|
|
|
2026-04-30 07:06:38 -04:00
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[ShowIf("@modifyColorHigh && useColorHighGradient")]
|
|
|
|
|
|
[LabelText("高颜色渐变")]
|
|
|
|
|
|
public ColorCurveChannel colorHighCurve = ColorCurveChannel.CreateDefault();
|
|
|
|
|
|
|
|
|
|
|
|
// ─── Color Low ───
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[LabelText("修改低颜色")]
|
|
|
|
|
|
public bool modifyColorLow;
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[ShowIf("modifyColorLow")]
|
|
|
|
|
|
[LabelText("使用渐变色")]
|
|
|
|
|
|
public bool useColorLowGradient;
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[ShowIf("@modifyColorLow && !useColorLowGradient")]
|
2026-04-18 13:57:19 -04:00
|
|
|
|
[LabelText("低颜色")]
|
2026-04-30 07:06:38 -04:00
|
|
|
|
public Color colorLowConstant = Color.black;
|
|
|
|
|
|
|
|
|
|
|
|
[TitleGroup("颜色设置")]
|
|
|
|
|
|
[ShowIf("@modifyColorLow && useColorLowGradient")]
|
|
|
|
|
|
[LabelText("低颜色渐变")]
|
|
|
|
|
|
public ColorCurveChannel colorLowCurve = ColorCurveChannel.CreateDefault();
|
|
|
|
|
|
|
2026-04-18 13:57:19 -04:00
|
|
|
|
protected override void TriggerEvent(FeedbackContext context)
|
|
|
|
|
|
{
|
|
|
|
|
|
StrobeFlashShakeEvent.Trigger(
|
|
|
|
|
|
context,
|
2026-04-30 07:06:38 -04:00
|
|
|
|
frequencyMode,
|
|
|
|
|
|
constantFrequency,
|
2026-04-18 13:57:19 -04:00
|
|
|
|
frequencyCurve,
|
2026-04-30 07:06:38 -04:00
|
|
|
|
manualCurve,
|
|
|
|
|
|
modifyColorHigh, useColorHighGradient, colorHighConstant, colorHighCurve,
|
|
|
|
|
|
modifyColorLow, useColorLowGradient, colorLowConstant, colorLowCurve
|
2026-04-18 13:57:19 -04:00
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected override void StopEvent(FeedbackContext context)
|
|
|
|
|
|
{
|
2026-04-30 07:06:38 -04:00
|
|
|
|
StrobeFlashShakeEvent.Trigger(context, stop: true);
|
2026-04-18 13:57:19 -04:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override bool Validate(out string error)
|
|
|
|
|
|
{
|
|
|
|
|
|
error = null;
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|