using Cirno.Scripts.Components.Actors._3D; using Cirno.Scripts.Utils; using Godot; namespace Cirno.Scripts.Components.FSM._3DPlayer; public partial class Cutscene : BaseState { public override PlayerState StateId => PlayerState.Cutscene; [Export] public PlayerAnimationProvider3D AnimationProvider { get; set; } private IsoPlayerStorageModule PlayerStorage { get; set; } public override void Init(IStateMachine machine) { base.Init(machine); if (machine is IsoPlayerStateMachine sm) PlayerStorage = sm.Storage; } public override void EnterState() { base.EnterState(); MainObject.Show(); MainObject.Velocity = Vector3.Zero; PlayerStorage.MovementDirection = Vector2.Zero; } public override void ExitState() { base.ExitState(); AnimationProvider.SetAnimationSpeed(Vector2.Zero); } public override void ProcessState(double delta) { base.ProcessState(delta); AnimationProvider.SetAnimationSpeed(MainObject.Velocity.ToVector2()); AnimationProvider.SetAnimation(MainObject.Velocity.ToVector2()); } }