123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- ////REVIEW: move everything from InputControlExtensions here?
-
- namespace UnityEngine.InputSystem
- {
- /// <summary>
- /// Various useful extension methods.
- /// </summary>
- public static class InputExtensions
- {
- /// <summary>
- /// Return true if the given phase is <see cref="InputActionPhase.Started"/> or <see cref="InputActionPhase.Performed"/>.
- /// </summary>
- /// <param name="phase">An action phase.</param>
- /// <returns>True if the phase is started or performed.</returns>
- /// <seealso cref="InputAction.phase"/>
- public static bool IsInProgress(this InputActionPhase phase)
- {
- return phase == InputActionPhase.Started || phase == InputActionPhase.Performed;
- }
-
- /// <summary>
- /// Return true if the given phase is <see cref="TouchPhase.Canceled"/> or <see cref="TouchPhase.Ended"/>, i.e.
- /// if a touch with that phase would no longer be ongoing.
- /// </summary>
- /// <param name="phase">A touch phase.</param>
- /// <returns>True if the phase indicates a touch that has ended.</returns>
- /// <seealso cref="Controls.TouchControl.phase"/>
- public static bool IsEndedOrCanceled(this TouchPhase phase)
- {
- return phase == TouchPhase.Canceled || phase == TouchPhase.Ended;
- }
-
- /// <summary>
- /// Return true if the given phase is <see cref="TouchPhase.Began"/>, <see cref="UnityEngine.TouchPhase.Moved"/>, or
- /// <see cref="TouchPhase.Stationary"/>, i.e. if a touch with that phase would indicate an ongoing touch.
- /// </summary>
- /// <param name="phase">A touch phase.</param>
- /// <returns>True if the phase indicates a touch that is ongoing.</returns>
- /// <seealso cref="Controls.TouchControl.phase"/>
- public static bool IsActive(this TouchPhase phase)
- {
- switch (phase)
- {
- case TouchPhase.Began:
- case TouchPhase.Moved:
- case TouchPhase.Stationary:
- return true;
- }
- return false;
- }
-
- /// <summary>
- /// Check if a <see cref="Key"/> enum value represents a modifier key.
- /// </summary>
- /// <param name="key">The key enum value you want to check.</param>
- /// <returns><c>true</c> if <paramref name="key"/> represents a modifier key, else <c>false</c>.</returns>
- /// <remarks>
- /// Modifier keys are any keys you can hold down to modify the output of other keys pressed simultaneously,
- /// such as the "shift" or "control" keys.
- /// </remarks>
- public static bool IsModifierKey(this Key key)
- {
- switch (key)
- {
- case Key.LeftAlt:
- case Key.RightAlt:
- case Key.LeftShift:
- case Key.RightShift:
- case Key.LeftMeta:
- case Key.RightMeta:
- case Key.LeftCtrl:
- case Key.RightCtrl:
- return true;
- }
- return false;
- }
-
- ////REVIEW: Is this a good idea? Ultimately it's up to any one keyboard layout to define this however it wants.
- /// <summary>
- /// Check if a <see cref="Key"/> enum value represents key generating text input.
- /// </summary>
- /// <param name="key">The key enum value you want to check.</param>
- /// <returns><c>true</c> if <paramref name="key"/> represents a key generating non-whitespace text input, else <c>false</c>.</returns>
- public static bool IsTextInputKey(this Key key)
- {
- switch (key)
- {
- case Key.LeftShift:
- case Key.RightShift:
- case Key.LeftAlt:
- case Key.RightAlt:
- case Key.LeftCtrl:
- case Key.RightCtrl:
- case Key.LeftMeta:
- case Key.RightMeta:
- case Key.ContextMenu:
- case Key.Escape:
- case Key.LeftArrow:
- case Key.RightArrow:
- case Key.UpArrow:
- case Key.DownArrow:
- case Key.Backspace:
- case Key.PageDown:
- case Key.PageUp:
- case Key.Home:
- case Key.End:
- case Key.Insert:
- case Key.Delete:
- case Key.CapsLock:
- case Key.NumLock:
- case Key.PrintScreen:
- case Key.ScrollLock:
- case Key.Pause:
- case Key.None:
- case Key.Space:
- case Key.Enter:
- case Key.Tab:
- case Key.NumpadEnter:
- case Key.F1:
- case Key.F2:
- case Key.F3:
- case Key.F4:
- case Key.F5:
- case Key.F6:
- case Key.F7:
- case Key.F8:
- case Key.F9:
- case Key.F10:
- case Key.F11:
- case Key.F12:
- case Key.OEM1:
- case Key.OEM2:
- case Key.OEM3:
- case Key.OEM4:
- case Key.OEM5:
- case Key.IMESelected:
- return false;
- }
- return true;
- }
- }
- }
|