godot-karrot-starter-theme/Common/StateMachines/Custom/PlayerStateMachines/MovementBasePlayerState.cs
2024-11-12 18:09:47 +01:00

36 lines
1.2 KiB
C#

using System.Threading.Tasks;
using Godot;
using Playground.Common.CharacterMovement;
namespace KarrotStarterTemplate.Common.StateMachines.Custom.PlayerStateMachines;
public partial class MovementBasePlayerState : BasePlayerState
{
// TODO
[Export] public string animationBlendPositionPath { get; set; } = "parameters/LocomotionBlendspace/blend_position";
[Export] public CharacterMovementMode movementMode { get; set; }
protected override Task OnEnter()
{
characterMovement.SetMovementMode(movementMode);
return base.OnEnter();
}
protected override void OnStateProcess(double delta)
{
base.OnStateProcess(delta);
animationTree.Set(animationBlendPositionPath, characterMovement.blendspacePosition);
}
protected override void OnStatePhysicsProcess(double delta)
{
characterMovement.AddMovementInput(cameraController.camera.GlobalBasis.Z, package.GetVector3("move_direction").Y);
characterMovement.AddMovementInput(cameraController.camera.GlobalBasis.X, package.GetVector3("move_direction").X);
// TODO: ?
// cameraController.rotatePlayer = !package.inputDirection.IsZeroApprox();
}
}