using System; using UnityEngine; using UnityEngine.InputSystem; [CreateAssetMenu(fileName = "InputReaderSO", menuName = "Scriptable Objects/InputReaderSO")] public class InputReaderSO : ScriptableObject, GameInputAction.IPlayerActions , IInputReader { public event Action OnDragValueChanged; public Vector2 dragInput { get => _dragInput; private set { _dragInput = value; OnDragValueChanged?.Invoke(_dragInput); } } public bool isMouseButtonPressed { get;private set; } private bool blockedInput = false; private Vector2 _dragInput; private GameInputAction action; private void OnEnable() { if(action == null) action = new GameInputAction(); action.Enable(); action.Player.SetCallbacks(this); isMouseButtonPressed= false; } private void OnDisable() { action.Player.Disable(); } public void OnDrag(InputAction.CallbackContext context) { dragInput = context.ReadValue(); } public void OnMouseClicked(InputAction.CallbackContext context) { isMouseButtonPressed = context.ReadValue() == 1 ? true : false; } public void LockInput() { action.Player.Disable(); } public void UnlockInput() { action.Player.Enable(); } }