125 lines
5.2 KiB
C#
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();
|
|
|
|
}
|