using UnityEngine; using UnityEngine.InputSystem; namespace Code.Input { public class InputService : IInputService { private readonly InputActionAsset _inputActionAsset; private InputAction _lmbInteractAction; public Vector2 MainMenuParalax { get; private set; } public Vector2 LookInput { get; private set; } public Vector2 MoveInput { get; private set; } public bool SprintPressed { get; private set; } public InputService(InputActionAsset inputActionAsset) { _inputActionAsset = inputActionAsset; SetupInputCallbacks(); } private void SetupInputCallbacks() { SetupMainMenuInputCallbacks(); //SetupMovementInputCallbacks(); } /*private void SetupMovementInputCallbacks() { var map = _inputActionAsset.actionMaps[(int)ActionMapping.Movement]; BindVector2(map, "Look", v => LookInput = v); BindVector2(map, "Move", v => MoveInput = v); BindButton(map, "Sprint", v => SprintPressed = v); }*/ private void SetupMainMenuInputCallbacks() { var map = _inputActionAsset.actionMaps[(int)ActionMapping.MainMenu]; BindVector2(map, "Parallax", v => MainMenuParalax = v); } private void BindButton(InputActionMap map, string actionName, System.Action setter) { var action = map.FindAction(actionName); if (action == null) return; action.performed += _ => setter(true); action.canceled += _ => setter(false); } private void BindVector2(InputActionMap map, string actionName, System.Action setter) { var action = map.FindAction(actionName); if (action == null) return; action.performed += ctx => setter(ctx.ReadValue()); action.canceled += _ => setter(Vector2.zero); } public void EnableMap(ActionMapping actionMap) { _inputActionAsset.actionMaps[(int)actionMap].Enable(); } public void DisableMap(ActionMapping actionMap) { _inputActionAsset.actionMaps[(int)actionMap].Disable(); } public void DebugBindAction(int mapId, int actionId, System.Action action) => _inputActionAsset.actionMaps[mapId].actions[actionId].performed += action; public void DebugUnbindAction(int mapId, int actionId, System.Action action) => _inputActionAsset.actionMaps[mapId].actions[actionId].performed -= action; } }