using Darkmatter.Core; using System; using UnityEngine; using UnityEngine.InputSystem; namespace Darkmatter.Core { [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 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(); } } }