Files
Infratest/Assets/Code/Example/Race/Racer/Player/PlayerCarInput.cs
T

41 lines
1.9 KiB
C#

using Code.Infrastructure.Input;
using Reflex.Attributes;
using UnityEngine;
using UnityEngine.InputSystem;
namespace Code.Example.Race.Racer.Player
{
public class PlayerCarInput : MonoBehaviour
{
private IInputService _inputService;
public Vector2 MovementInput { get; private set; }
public bool Brake { get; private set; }
[Inject]
public void Construct(IInputService inputService)
{
_inputService = inputService;
_inputService.BindActionPerformed((int)ActionMappings.Race, (int)RaceActions.Move, MovementPerformed);
_inputService.BindActionCancelled((int)ActionMappings.Race, (int)RaceActions.Move, MovementEnded);
_inputService.BindActionPerformed((int)ActionMappings.Race, (int)RaceActions.Brake, BrakePerformed);
_inputService.BindActionCancelled((int)ActionMappings.Race, (int)RaceActions.Brake, BrakeEnded);
}
private void MovementPerformed(InputAction.CallbackContext context) => MovementInput = context.ReadValue<Vector2>();
private void MovementEnded(InputAction.CallbackContext context) => MovementInput = Vector2.zero;
private void BrakePerformed(InputAction.CallbackContext context) => Brake = true;
private void BrakeEnded(InputAction.CallbackContext context) => Brake = false;
private void OnDestroy()
{
if (_inputService == null) return;
_inputService.UnbindActionPerformed((int)ActionMappings.Race, (int)RaceActions.Move, MovementPerformed);
_inputService.UnbindActionCancelled((int)ActionMappings.Race, (int)RaceActions.Move, MovementEnded);
_inputService.UnbindActionPerformed((int)ActionMappings.Race, (int)RaceActions.Brake, BrakePerformed);
_inputService.UnbindActionCancelled((int)ActionMappings.Race, (int)RaceActions.Brake, BrakeEnded);
}
}
}