Files
JuegoSim/Assets/_Project/Scripts/Code/InputSystem/PCIntputProvider.cs
T
2026-07-21 08:56:10 +03:00

125 lines
5.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class PCIntputProvider : BaseInputProvider
{
public InputAction mousePosition;
public InputAction mouseDelta;
public InputAction scrollAction;
public InputAction panAction;
public InputAction orbitAction;
public InputAction rotateAction;
public InputAction placeAction;
public InputAction EndDraggingAction;
public InputAction selectAction;
public InputAction cancelAction;
public InputAction deleteAction;
public InputAction enableMultiSelectAction;
public InputAction disableMultiSelectAction;
private void OnEnable()
{
mousePosition.Enable();
mouseDelta.Enable();
scrollAction.Enable();
panAction.Enable();
orbitAction.Enable();
rotateAction.Enable();
placeAction.Enable();
EndDraggingAction.Enable();
selectAction.Enable();
cancelAction.Enable();
deleteAction.Enable();
enableMultiSelectAction.Enable();
disableMultiSelectAction.Enable();
mousePosition.performed += OnInputSystem_Move;
mouseDelta.performed += OnInputSystem_Delta;
scrollAction.performed += OnInputSystem_Scroll;
panAction.started += OnInputSystem_PanStart;
panAction.canceled += OnInputSystem_PanEnd;
orbitAction.started += OnInputSystem_OrbitStart;
orbitAction.canceled += OnInputSystem_OrbitEnd;
rotateAction.performed += OnInputSystem_Rotate;
placeAction.performed += OnInputSystem_Place;
EndDraggingAction.performed += OnInputSystem_DraggingEnd;
cancelAction.performed += OnInputSystem_Cancel;
selectAction.performed += OnInputSystem_Select;
enableMultiSelectAction.performed += OnInputSystem_EnableMultiSelect;
disableMultiSelectAction.performed += OnInputSystem_DisableMultiSelect;
deleteAction.performed += OnInputSystem_Delete;
}
private void OnDisable()
{
mousePosition.Disable();
mouseDelta.Disable();
scrollAction.Disable();
panAction.Disable();
orbitAction.Disable();
rotateAction.Disable();
placeAction.Disable();
EndDraggingAction.Disable();
selectAction.Disable();
cancelAction.Disable();
deleteAction.Disable();
enableMultiSelectAction.Disable();
disableMultiSelectAction.Disable();
mousePosition.performed -= OnInputSystem_Move;
mouseDelta.performed -= OnInputSystem_Delta;
scrollAction.performed -= OnInputSystem_Scroll;
panAction.started -= OnInputSystem_PanStart;
panAction.canceled -= OnInputSystem_PanEnd;
orbitAction.started -= OnInputSystem_OrbitStart;
orbitAction.canceled -= OnInputSystem_OrbitEnd;
rotateAction.performed -= OnInputSystem_Rotate;
placeAction.performed -= OnInputSystem_Place;
EndDraggingAction.performed -= OnInputSystem_DraggingEnd;
cancelAction.performed -= OnInputSystem_Cancel;
selectAction.performed -= OnInputSystem_Select;
enableMultiSelectAction.performed -= OnInputSystem_EnableMultiSelect;
disableMultiSelectAction.performed -= OnInputSystem_DisableMultiSelect;
deleteAction.performed -= OnInputSystem_Delete;
}
private void OnInputSystem_Move(InputAction.CallbackContext ctx) =>
OnCursorMoved.Invoke(ctx.ReadValue<Vector2>());
private void OnInputSystem_Delta(InputAction.CallbackContext ctx) =>
OnCursorDelta.Invoke(ctx.ReadValue<Vector2>());
private void OnInputSystem_Scroll(InputAction.CallbackContext ctx)
{
Vector2 scroll = ctx.ReadValue<Vector2>();
// Camera zoom
if (scroll.y != 0)
OnZoom.Invoke(scroll.y);
// Attach point cycling (original behaviour preserved)
OnChangeAttachPoint.Invoke(scroll.y > 0 ? 1 : -1);
}
private void OnInputSystem_PanStart(InputAction.CallbackContext ctx)
{
// Read the actual current cursor position at click time, not a cached value
Vector2 cursorPos = mousePosition.ReadValue<Vector2>();
OnPanStart.Invoke(cursorPos);
}
private void OnInputSystem_PanEnd(InputAction.CallbackContext ctx) => OnPanEnd.Invoke();
private void OnInputSystem_OrbitStart(InputAction.CallbackContext ctx) => OnRotateStart.Invoke();
private void OnInputSystem_OrbitEnd(InputAction.CallbackContext ctx) => OnRotateEnd.Invoke();
private void OnInputSystem_Rotate(InputAction.CallbackContext ctx) => OnRotate.Invoke();
private void OnInputSystem_Place(InputAction.CallbackContext ctx) => OnPlace.Invoke();
private void OnInputSystem_DraggingEnd(InputAction.CallbackContext ctx) => OnDraggingEnd.Invoke();
private void OnInputSystem_Cancel(InputAction.CallbackContext ctx) => OnCancel.Invoke();
private void OnInputSystem_Select(InputAction.CallbackContext ctx) => OnSelect.Invoke();
private void OnInputSystem_EnableMultiSelect(InputAction.CallbackContext ctx) => OnEnableMultiSelect.Invoke();
private void OnInputSystem_DisableMultiSelect(InputAction.CallbackContext ctx) => OnDisableMultiSelect.Invoke();
private void OnInputSystem_Delete(InputAction.CallbackContext ctx) => OnDelete.Invoke();
}