Firstborn/Assets/SWAN Dev/UnifyInput/UnifyInputUtil.cs

298 lines
11 KiB
C#
Raw Permalink Normal View History

/// <summary>
/// Created by SWAN DEV
/// </summary>
using UnityEngine;
#if ENABLE_INPUT_SYSTEM
using UnityEngine.InputSystem;
#endif
namespace SDev.Util
{
public static class UnifyInputUtil
{
public static bool IsInputSystemEnabled
{
get
{
#if ENABLE_INPUT_SYSTEM
return true;
#else
return false;
#endif
}
}
public static bool IsLegacyInputEnabled
{
get
{
#if !ENABLE_INPUT_SYSTEM || ENABLE_LEGACY_INPUT_MANAGER
return true;
#else
return false;
#endif
}
}
#if ENABLE_INPUT_SYSTEM
public static bool GetKeyDown(Key key)
{
return Keyboard.current[key].wasPressedThisFrame;
}
#endif
public static bool GetKeyDown(KeyCode keyCode)
{
#if !ENABLE_INPUT_SYSTEM || ENABLE_LEGACY_INPUT_MANAGER
return Input.GetKeyDown(keyCode);
#else
Key key = Key.None;
switch (keyCode)
{
/*
* Add your Key mapping as needed (* Not all KeyCodes have a corresponding enum in the Key)
*/
case KeyCode.Escape: key = Key.Escape; break;
case KeyCode.Space: key = Key.Space; break;
case KeyCode.Return: key = Key.Enter; break;
case KeyCode.Insert: key = Key.Insert; break;
case KeyCode.Delete: key = Key.Delete; break;
case KeyCode.Tab: key = Key.Tab; break;
case KeyCode.AltGr: key = Key.AltGr; break;
case KeyCode.LeftAlt: key = Key.LeftAlt; break;
case KeyCode.RightAlt: key = Key.RightAlt; break;
case KeyCode.LeftShift: key = Key.LeftShift; break;
case KeyCode.RightShift: key = Key.RightShift; break;
case KeyCode.LeftControl: key = Key.LeftCtrl; break;
case KeyCode.RightControl: key = Key.RightCtrl; break;
case KeyCode.LeftCommand: key = Key.LeftCommand; break;
case KeyCode.RightCommand: key = Key.RightCommand; break;
case KeyCode.LeftWindows: key = Key.LeftWindows; break;
case KeyCode.RightWindows: key = Key.RightWindows; break;
case KeyCode.Backspace: key = Key.Backspace; break;
case KeyCode.Numlock: key = Key.NumLock; break;
case KeyCode.CapsLock: key = Key.CapsLock; break;
case KeyCode.ScrollLock: key = Key.ScrollLock; break;
case KeyCode.End: key = Key.End; break;
case KeyCode.Home: key = Key.Home; break;
case KeyCode.DownArrow: key = Key.DownArrow; break;
case KeyCode.LeftArrow: key = Key.LeftArrow; break;
case KeyCode.RightArrow: key = Key.RightArrow; break;
case KeyCode.UpArrow: key = Key.UpArrow; break;
case KeyCode.PageDown: key = Key.PageDown; break;
case KeyCode.PageUp: key = Key.PageUp; break;
case KeyCode.F1: key = Key.F1; break;
case KeyCode.F2: key = Key.F2; break;
case KeyCode.F3: key = Key.F3; break;
case KeyCode.F4: key = Key.F4; break;
case KeyCode.F5: key = Key.F5; break;
case KeyCode.F6: key = Key.F6; break;
case KeyCode.F7: key = Key.F7; break;
case KeyCode.F8: key = Key.F8; break;
case KeyCode.F9: key = Key.F9; break;
case KeyCode.F10: key = Key.F10; break;
case KeyCode.F11: key = Key.F11; break;
case KeyCode.F12: key = Key.F12; break;
case KeyCode.Alpha0: key = Key.Digit0; break;
case KeyCode.Alpha1: key = Key.Digit1; break;
case KeyCode.Alpha2: key = Key.Digit2; break;
case KeyCode.Alpha3: key = Key.Digit3; break;
case KeyCode.Alpha4: key = Key.Digit4; break;
case KeyCode.Alpha5: key = Key.Digit5; break;
case KeyCode.Alpha6: key = Key.Digit6; break;
case KeyCode.Alpha7: key = Key.Digit7; break;
case KeyCode.Alpha8: key = Key.Digit8; break;
case KeyCode.Alpha9: key = Key.Digit9; break;
case KeyCode.Plus: key = Key.Equals; break;
case KeyCode.Minus: key = Key.Minus; break;
case KeyCode.Keypad0: key = Key.Numpad0; break;
case KeyCode.Keypad1: key = Key.Numpad1; break;
case KeyCode.Keypad2: key = Key.Numpad2; break;
case KeyCode.Keypad3: key = Key.Numpad3; break;
case KeyCode.Keypad4: key = Key.Numpad4; break;
case KeyCode.Keypad5: key = Key.Numpad5; break;
case KeyCode.Keypad6: key = Key.Numpad6; break;
case KeyCode.Keypad7: key = Key.Numpad7; break;
case KeyCode.Keypad8: key = Key.Numpad8; break;
case KeyCode.Keypad9: key = Key.Numpad9; break;
case KeyCode.KeypadEnter: key = Key.NumpadEnter; break;
case KeyCode.KeypadPlus: key = Key.NumpadPlus; break;
case KeyCode.KeypadMinus: key = Key.NumpadMinus; break;
case KeyCode.A: key = Key.A; break;
case KeyCode.B: key = Key.B; break;
case KeyCode.C: key = Key.C; break;
case KeyCode.D: key = Key.D; break;
case KeyCode.E: key = Key.E; break;
case KeyCode.F: key = Key.F; break;
case KeyCode.G: key = Key.G; break;
case KeyCode.H: key = Key.H; break;
case KeyCode.I: key = Key.I; break;
case KeyCode.J: key = Key.J; break;
case KeyCode.K: key = Key.K; break;
case KeyCode.L: key = Key.L; break;
case KeyCode.M: key = Key.M; break;
case KeyCode.N: key = Key.N; break;
case KeyCode.O: key = Key.O; break;
case KeyCode.P: key = Key.P; break;
case KeyCode.Q: key = Key.Q; break;
case KeyCode.R: key = Key.R; break;
case KeyCode.S: key = Key.S; break;
case KeyCode.T: key = Key.T; break;
case KeyCode.U: key = Key.U; break;
case KeyCode.V: key = Key.V; break;
case KeyCode.W: key = Key.W; break;
case KeyCode.X: key = Key.X; break;
case KeyCode.Y: key = Key.Y; break;
case KeyCode.Z: key = Key.Z; break;
}
return GetKeyDown(key);
#endif
}
public static Vector3 GetCursorPosition()
{
#if ENABLE_INPUT_SYSTEM
var mouse = Mouse.current;
if (mouse != null)
{
return mouse.position.ReadValue();
}
var touchScreen = Touchscreen.current;
if (touchScreen != null)
{
return touchScreen.position.ReadValue();
}
return Vector3.zero;
#else
return Input.mousePosition;
#endif
}
public static bool IsTouchOrMousePressed()
{
bool isTouched = false;
#if ENABLE_INPUT_SYSTEM
var mouse = Mouse.current;
if (mouse != null && mouse.press.isPressed)
{
isTouched = true;
}
var touchScreen = Touchscreen.current;
if (touchScreen != null && touchScreen.press.isPressed)
{
isTouched = true;
}
#else
isTouched = Input.GetMouseButton(0);
#endif
return isTouched;
}
public static bool WasTouchOrMousePressed()
{
bool isTouchDown = false;
#if ENABLE_INPUT_SYSTEM
var mouse = Mouse.current;
if (mouse != null && mouse.press.wasPressedThisFrame)
{
isTouchDown = true;
}
var touchScreen = Touchscreen.current;
if (touchScreen != null && touchScreen.press.wasPressedThisFrame)
{
isTouchDown = true;
}
#else
isTouchDown = Input.GetMouseButtonDown(0);
#endif
return isTouchDown;
}
public static bool WasTouchOrMouseReleased()
{
bool isTouchUp = false;
#if ENABLE_INPUT_SYSTEM
var mouse = Mouse.current;
if (mouse != null && mouse.press.wasReleasedThisFrame)
{
isTouchUp = true;
}
var touchScreen = Touchscreen.current;
if (touchScreen != null && touchScreen.press.wasReleasedThisFrame)
{
isTouchUp = true;
}
#else
isTouchUp = Input.GetMouseButtonUp(0);
#endif
return isTouchUp;
}
public static int TouchCount
{
get
{
int count = 0;
#if ENABLE_INPUT_SYSTEM
var touchScreen = Touchscreen.current;
if (touchScreen != null && touchScreen.press.isPressed)
{
for (int i = 0; i < touchScreen.touches.Count; i++)
{
if (touchScreen.touches[i].press.isPressed) count++;
}
}
if (count == 0)
{
var mouse = Mouse.current;
if (mouse != null && mouse.press.isPressed)
{
count = 1;
}
}
#else
count = Input.touchCount;
#endif
return count;
}
}
/// <summary>
/// Usage: if (SDev.Util.DInputUtil.TryGetTouchPosition(0, out Vector3 touchPos)) { Debug.Log("Touch (screen) position: " + touchPos); }
/// </summary>
public static bool TryGetTouchPosition(int touchIndex, out Vector3 touchPosition)
{
#if ENABLE_INPUT_SYSTEM
var touchScreen = Touchscreen.current;
if (touchScreen != null && touchScreen.press.isPressed && touchIndex < touchScreen.touches.Count)
{
touchPosition = touchScreen.touches[touchIndex].position.ReadValue();
return true;
}
var mouse = Mouse.current;
if (mouse != null && mouse.press.isPressed)
{
touchPosition = mouse.position.ReadValue();
return true;
}
touchPosition = Vector3.zero;
return false;
#else
touchPosition = Input.mousePosition;
return true;
#endif
}
}
}