using System;
using Sirenix.OdinInspector;
using UnityEngine;
namespace SLSUtilities.Feedback
{
///
/// 通用的"按曲线震动数值"基类,提供曲线采样、初始值记录/复位等通用逻辑。
/// RadialBlur、ChromaticAberration、Vignette 等后处理效果均继承此类。
///
[Serializable]
public abstract class CurveShakeAction : FeedbackActionBase
{
///
/// 震动曲线,X 轴为归一化时间 [0,1],Y 轴为震动强度 [0,1]。
///
[Title("Curve Shake")]
[LabelText("Shake Curve")]
[ShakeCurvePreset]
public AnimationCurve shakeCurve = new AnimationCurve(
new Keyframe(0f, 0f),
new Keyframe(0.5f, 1f),
new Keyframe(1f, 0f)
);
///
/// 曲线值 0 对应的实际数值。
///
[LabelText("Remap Min")]
public float remapMin;
///
/// 曲线值 1 对应的实际数值。
///
[LabelText("Remap Max")]
public float remapMax = 1f;
///
/// 是否在初始值上叠加(而非替换)。
///
[LabelText("Relative to Initial")]
public bool relativeToInitial;
protected virtual float EvaluateShake(float normalizedTime, float initialValue)
{
return base.EvaluateShake(shakeCurve, remapMin, remapMax, relativeToInitial, normalizedTime, initialValue);
}
}
}