123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
- using UnityEngine;
- #if UNITY_UGUI
- using UnityEngine.EventSystems;
- #endif
- #if UNITY_INPUT_SYSTEM
- using UnityEngine.InputSystem;
- #endif
- namespace Animancer.Samples
- {
- /// <summary>
- /// A standard wrapper for receiving input from the
- /// <see href="https://docs.unity3d.com/Packages/com.unity.inputsystem@latest">Input System</see> package or the
- /// <see href="https://docs.unity3d.com/Manual/class-InputManager.html">Legacy Input Manager</see>.
- /// <remarks>
- /// <strong>Documentation:</strong>
- /// <see href="https://kybernetik.com.au/animancer/docs/samples/basics/input">
- /// Input</see>
- /// </remarks>
- /// https://kybernetik.com.au/animancer/api/Animancer.Samples/SampleInput
- ///
- [AnimancerHelpUrl(typeof(SampleInput))]
- public static class SampleInput
- {
- /************************************************************************************************************************/
- /// <summary>The current screen position of the mouse pointer.</summary>
- public static Vector2 MousePosition
- #if UNITY_INPUT_SYSTEM
- => Mouse.current.position.ReadValue();
- #else
- => Input.mousePosition;
- #endif
- /// <summary>The amount that the mouse has moved since last frame.</summary>
- public static Vector2 MousePositionDelta
- #if UNITY_INPUT_SYSTEM
- => Mouse.current.delta.ReadValue();
- #else
- => new(Input.GetAxisRaw("Mouse X") * 20, Input.GetAxisRaw("Mouse Y") * 20);
- #endif
- /// <summary>The amount that the mouse scroll value has changed since last frame.</summary>
- public static Vector2 MouseScrollDelta
- #if UNITY_INPUT_SYSTEM
- => Mouse.current.scroll.ReadValue() * 0.01f;
- #else
- => Input.mouseScrollDelta;
- #endif
- /************************************************************************************************************************/
- /// <summary>Is the mouse pointer currently over a UI object?</summary>
- public static bool IsPointerOverUI
- #if UNITY_UGUI
- => EventSystem.current != null
- && EventSystem.current.IsPointerOverGameObject();
- #else
- => false;
- #endif
- /************************************************************************************************************************/
- /// <summary>Was the left mouse button pressed this frame?</summary>
- public static bool LeftMouseDown
- #if UNITY_INPUT_SYSTEM
- => !IsPointerOverUI
- && Mouse.current.leftButton.wasPressedThisFrame;
- #else
- => Input.GetMouseButtonDown(0);
- #endif
- /// <summary>Is the left mouse button currently being held down?</summary>
- public static bool LeftMouseHold
- #if UNITY_INPUT_SYSTEM
- => Mouse.current.leftButton.isPressed;
- #else
- => Input.GetMouseButton(0);
- #endif
- /// <summary>Was the left mouse button released this frame?</summary>
- public static bool LeftMouseUp
- #if UNITY_INPUT_SYSTEM
- => !IsPointerOverUI
- && Mouse.current.leftButton.wasReleasedThisFrame;
- #else
- => !IsPointerOverUI
- && Input.GetMouseButtonUp(0);
- #endif
- /************************************************************************************************************************/
- /// <summary>Was the right mouse button pressed this frame?</summary>
- public static bool RightMouseDown
- #if UNITY_INPUT_SYSTEM
- => !IsPointerOverUI
- && Mouse.current.rightButton.wasPressedThisFrame;
- #else
- => !IsPointerOverUI
- && Input.GetMouseButtonDown(1);
- #endif
- /// <summary>Is the right mouse button currently being held down?</summary>
- public static bool RightMouseHold
- #if UNITY_INPUT_SYSTEM
- => Mouse.current.rightButton.isPressed;
- #else
- => Input.GetMouseButton(1);
- #endif
- /************************************************************************************************************************/
- /// <summary>Was <see cref="KeyCode.Space"/> pressed this frame?</summary>
- public static bool SpaceDown
- #if UNITY_INPUT_SYSTEM
- => Keyboard.current.spaceKey.wasPressedThisFrame;
- #else
- => Input.GetKeyDown(KeyCode.Space);
- #endif
- /// <summary>Is <see cref="KeyCode.Space"/> currently being held down?</summary>
- public static bool SpaceHold
- #if UNITY_INPUT_SYSTEM
- => Keyboard.current.spaceKey.isPressed;
- #else
- => Input.GetKey(KeyCode.Space);
- #endif
- /// <summary>Was <see cref="KeyCode.Space"/> released this frame?</summary>
- public static bool SpaceUp
- #if UNITY_INPUT_SYSTEM
- => Keyboard.current.spaceKey.wasReleasedThisFrame;
- #else
- => Input.GetKeyUp(KeyCode.Space);
- #endif
- /************************************************************************************************************************/
- /// <summary>Is <see cref="KeyCode.LeftShift"/> currently being held down?</summary>
- public static bool LeftShiftHold
- #if UNITY_INPUT_SYSTEM
- => Keyboard.current.leftShiftKey.isPressed;
- #else
- => Input.GetKey(KeyCode.LeftShift);
- #endif
- /************************************************************************************************************************/
- /// <summary>Was <see cref="KeyCode.Alpha1"/> released this frame?</summary>
- public static bool Number1Up
- #if UNITY_INPUT_SYSTEM
- => Keyboard.current.digit1Key.wasReleasedThisFrame;
- #else
- => Input.GetKeyUp(KeyCode.Alpha1);
- #endif
- /// <summary>Was <see cref="KeyCode.Alpha2"/> released this frame?</summary>
- public static bool Number2Up
- #if UNITY_INPUT_SYSTEM
- => Keyboard.current.digit2Key.wasReleasedThisFrame;
- #else
- => Input.GetKeyUp(KeyCode.Alpha2);
- #endif
- /************************************************************************************************************************/
- #if UNITY_INPUT_SYSTEM
- private static InputAction _WasdAction;
- #endif
- /// <summary>WASD Controls.</summary>
- public static Vector2 WASD
- #if UNITY_INPUT_SYSTEM
- {
- get
- {
- if (_WasdAction == null)
- {
- _WasdAction = new(nameof(WASD), InputActionType.Value);
- _WasdAction.AddCompositeBinding("2DVector")
- .With("Up", "<Keyboard>/w")
- .With("Down", "<Keyboard>/s")
- .With("Left", "<Keyboard>/a")
- .With("Right", "<Keyboard>/d");
- }
- _WasdAction.Enable();
- return _WasdAction.ReadValue<Vector2>();
- }
- }
- #else
- => new(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
- #endif
- /************************************************************************************************************************/
- }
- }
|