mirror of
https://github.com/sinai-dev/UnityExplorer.git
synced 2025-06-19 23:37:39 +08:00
103 lines
2.9 KiB
C#
103 lines
2.9 KiB
C#
using System;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
|
|
namespace UnityExplorer.Core.Input
|
|
{
|
|
public enum InputType
|
|
{
|
|
InputSystem,
|
|
Legacy,
|
|
None
|
|
}
|
|
|
|
public static class InputManager
|
|
{
|
|
public static InputType CurrentType { get; private set; }
|
|
|
|
private static IHandleInput m_inputModule;
|
|
|
|
public static Vector3 MousePosition => m_inputModule.MousePosition;
|
|
|
|
public static bool GetKeyDown(KeyCode key)
|
|
{
|
|
if (key == KeyCode.None)
|
|
return false;
|
|
return m_inputModule.GetKeyDown(key);
|
|
}
|
|
|
|
public static bool GetKey(KeyCode key)
|
|
{
|
|
if (key == KeyCode.None)
|
|
return false;
|
|
return m_inputModule.GetKey(key);
|
|
}
|
|
|
|
public static bool GetMouseButtonDown(int btn) => m_inputModule.GetMouseButtonDown(btn);
|
|
public static bool GetMouseButton(int btn) => m_inputModule.GetMouseButton(btn);
|
|
|
|
public static BaseInputModule UIInput => m_inputModule.UIModule;
|
|
|
|
public static Vector2 MouseScrollDelta => m_inputModule.MouseScrollDelta;
|
|
|
|
public static void ActivateUIModule() => m_inputModule.ActivateModule();
|
|
|
|
public static void AddUIModule()
|
|
{
|
|
m_inputModule.AddUIInputModule();
|
|
ActivateUIModule();
|
|
}
|
|
|
|
public static void Init()
|
|
{
|
|
InitHandler();
|
|
|
|
CursorUnlocker.Init();
|
|
}
|
|
|
|
private static void InitHandler()
|
|
{
|
|
// First, just try to use the legacy input, see if its working.
|
|
// The InputSystem package may be present but not actually activated, so we can find out this way.
|
|
|
|
if (LegacyInput.TInput != null)
|
|
{
|
|
try
|
|
{
|
|
m_inputModule = new LegacyInput();
|
|
CurrentType = InputType.Legacy;
|
|
|
|
// make sure its working
|
|
GetKeyDown(KeyCode.F5);
|
|
|
|
ExplorerCore.Log("Initialized Legacy Input support");
|
|
return;
|
|
}
|
|
catch
|
|
{
|
|
// It's not working, we'll fall back to InputSystem.
|
|
}
|
|
}
|
|
|
|
if (InputSystem.TKeyboard != null)
|
|
{
|
|
try
|
|
{
|
|
m_inputModule = new InputSystem();
|
|
CurrentType = InputType.InputSystem;
|
|
ExplorerCore.Log("Initialized new InputSystem support.");
|
|
return;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ExplorerCore.Log(ex);
|
|
}
|
|
}
|
|
|
|
ExplorerCore.LogWarning("Could not find any Input Module Type!");
|
|
m_inputModule = new NoInput();
|
|
CurrentType = InputType.None;
|
|
}
|
|
}
|
|
} |