using Cirno.Scripts.Actors; using Cirno.Scripts.Weapons; using Godot; namespace Cirno.Scripts.Resources.Modifiers; [GlobalClass] [Tool] public partial class DelayedSpeedIncreaseModifier : TimeModifier { [Export] public Tween.TransitionType TransitionType { get; set; } = Tween.TransitionType.Linear; [Export] public Tween.EaseType EaseType { get; set; } = Tween.EaseType.InOut; [Export] public float Duration { get; set; } = 1.0f; public override void Update(IBullet bullet, double delta, double elapsed) { float easedValue = ApplyEasing(Value, elapsed); bullet.Speed += easedValue; } private float ApplyEasing(float value, double time) { float t = Mathf.Clamp((float)time, 0f, 1f); // Ensure the value stays within range return (float)Tween.InterpolateValue(0f, value, t, Duration, TransitionType, EaseType); } }