Files
GoblinRaid/Assets/Asset Packs/Synty/AnimationBaseLocomotion/Samples/Scripts/InputSystem/InputReader.cs
Caleb Sandford deQuincey e2b97323a3 Started building first moment
2025-10-31 20:33:41 +00:00

170 lines
5.0 KiB
C#

// Copyright (c) 2024 Synty Studios Limited. All rights reserved.
//
// Use of this software is subject to the terms and conditions of the Synty Studios End User Licence Agreement (EULA)
// available at: https://syntystore.com/pages/end-user-licence-agreement
//
// Sample scripts are included only as examples and are not intended as production-ready.
using System;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Serialization;
namespace Synty.AnimationBaseLocomotion.Samples.InputSystem
{
public class InputReader : MonoBehaviour, Controls.IPlayerActions
{
public Vector2 _mouseDelta;
public Vector2 _moveComposite;
public float _movementInputDuration;
public bool _movementInputDetected;
private Controls _controls;
public Action onAimActivated;
public Action onAimDeactivated;
public Action onCrouchActivated;
public Action onCrouchDeactivated;
public Action onJumpPerformed;
public Action onLockOnToggled;
public Action onSprintActivated;
public Action onSprintDeactivated;
public Action onWalkToggled;
/// <inheritdoc cref="OnEnable" />
private void OnEnable()
{
if (_controls == null)
{
_controls = new Controls();
_controls.Player.SetCallbacks(this);
}
_controls.Player.Enable();
}
/// <inheritdoc cref="OnDisable" />
public void OnDisable()
{
_controls.Player.Disable();
}
/// <summary>
/// Defines the action to perform when the OnLook callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnLook(InputAction.CallbackContext context)
{
_mouseDelta = context.ReadValue<Vector2>();
}
/// <summary>
/// Defines the action to perform when the OnMove callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnMove(InputAction.CallbackContext context)
{
_moveComposite = context.ReadValue<Vector2>();
_movementInputDetected = _moveComposite.magnitude > 0;
}
/// <summary>
/// Defines the action to perform when the OnJump callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnJump(InputAction.CallbackContext context)
{
if (!context.performed)
{
return;
}
onJumpPerformed?.Invoke();
}
/// <summary>
/// Defines the action to perform when the OnToggleWalk callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnToggleWalk(InputAction.CallbackContext context)
{
if (!context.performed)
{
return;
}
onWalkToggled?.Invoke();
}
/// <summary>
/// Defines the action to perform when the OnSprint callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnSprint(InputAction.CallbackContext context)
{
if (context.started)
{
onSprintActivated?.Invoke();
}
else if (context.canceled)
{
onSprintDeactivated?.Invoke();
}
}
/// <summary>
/// Defines the action to perform when the OnCrouch callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnCrouch(InputAction.CallbackContext context)
{
if (context.started)
{
onCrouchActivated?.Invoke();
}
else if (context.canceled)
{
onCrouchDeactivated?.Invoke();
}
}
/// <summary>
/// Defines the action to perform when the OnAim callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnAim(InputAction.CallbackContext context)
{
if (context.started)
{
onAimActivated?.Invoke();
}
if (context.canceled)
{
onAimDeactivated?.Invoke();
}
}
/// <summary>
/// Defines the action to perform when the OnLockOn callback is called.
/// </summary>
/// <param name="context">The context of the callback.</param>
public void OnLockOn(InputAction.CallbackContext context)
{
if (!context.performed)
{
return;
}
onLockOnToggled?.Invoke();
onSprintDeactivated?.Invoke();
}
}
}