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()); private void OnInputSystem_Delta(InputAction.CallbackContext ctx) => OnCursorDelta.Invoke(ctx.ReadValue()); private void OnInputSystem_Scroll(InputAction.CallbackContext ctx) { Vector2 scroll = ctx.ReadValue(); // 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(); 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(); }