using Cirno.Scripts.Components.Actors._3D; using Cirno.Scripts.Components.FSM.Player; 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; } [Export] public IsoPlayerStorageModule PlayerStorage { get; private set; } public override void Init(IStateMachine machine) { base.Init(machine); } 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()); } public override void PhysicsProcessState(double delta) { // Reset at start of frame //MainObject.Velocity = Vector2.Zero; // Process modules base.PhysicsProcessState(delta); } }