using System; using Sirenix.OdinInspector; using SLSUtilities.Feedback; using UnityEngine; namespace Cielonos.MainGame.Effects.Feedback { /// /// 高级暗角反馈动作,通过 VignetteShakeEvent 触发 VignetteShaker。 /// [Serializable] [FeedbackActionColor(0.9f, 0.5f, 0.3f)] public class VignetteAction : PostprocessingActionBase { public override string DisplayName => "Vignette"; public FloatCurveChannel intensityCurve = FloatCurveChannel.CreateDefault(remapMax: 1f); /// /// 是否修改暗角中心点。 /// [LabelText("修改中心点")] public bool modifyCenter; /// /// 模糊中心的屏幕坐标 (0-1)。(0.5, 0.5) 为屏幕正中心。 /// [HideIf("modifyCenter")] [LabelText("中心点")] public Vector2 center = new Vector2(0.5f, 0.5f); [ShowIf("modifyCenter")] public Vector2CurveChannel centerCurve = Vector2CurveChannel.CreateDefault(); /// /// 是否修改颜色。 /// [LabelText("修改颜色")] public bool modifyColors; [HideIf("modifyColors")] public Color outColor; [HideIf("modifyColors")] public Color innerColor; /// /// 外圈颜色。 /// [ShowIf("modifyColors")] [LabelText("外圈颜色")] public ColorCurveChannel outerColorCurve = ColorCurveChannel.CreateDefault(); /// /// 内圈颜色。 /// [ShowIf("modifyColors")] [LabelText("内圈颜色")] public ColorCurveChannel innerColorCurve = ColorCurveChannel.CreateDefault(); /// /// 是否修改形状。 /// [LabelText("修改形状")] public bool modifyShape; [HideIf("modifyShape")] public float smoothness; [HideIf("modifyShape")] public float roundness; /// /// 柔和度曲线。 /// [ShowIf("modifyShape")] [LabelText("柔和度曲线")] public FloatCurveChannel smoothnessCurve = FloatCurveChannel.CreateDefault(remapMax: 0.5f); /// /// 圆度曲线。 /// [ShowIf("modifyShape")] [LabelText("圆度曲线")] public FloatCurveChannel roundnessCurve = FloatCurveChannel.CreateDefault(remapMax: 1f); protected override void TriggerEvent(FeedbackContext context) { VignetteShakeEvent.Trigger( context, intensityCurve, modifyCenter, center, modifyColors, outerColorCurve, innerColorCurve, modifyShape, smoothnessCurve, roundnessCurve ); } protected override void StopEvent(FeedbackContext context) { VignetteShakeEvent.Trigger(context, intensityCurve, stop: true); } public override bool Validate(out string error) { error = null; return true; } } }