feat: add document comments
parent
3cd5067f49
commit
8d3287c36c
|
@ -3,87 +3,105 @@ using UnityEngine.Events;
|
||||||
|
|
||||||
namespace SkyHook
|
namespace SkyHook
|
||||||
{
|
{
|
||||||
public class SkyHookManager : MonoBehaviour
|
public class SkyHookManager : MonoBehaviour
|
||||||
{
|
|
||||||
private static SkyHookManager _instance;
|
|
||||||
|
|
||||||
internal static bool IsFocused;
|
|
||||||
|
|
||||||
public bool requireFocus = true;
|
|
||||||
|
|
||||||
private bool _started;
|
|
||||||
|
|
||||||
public static UnityEvent<SkyHookEvent> KeyUpdated = new();
|
|
||||||
|
|
||||||
public static SkyHookManager Instance
|
|
||||||
{
|
{
|
||||||
get
|
private static SkyHookManager _instance;
|
||||||
{
|
|
||||||
if (_instance) return _instance;
|
|
||||||
|
|
||||||
var obj = new GameObject("SkyHook Manager");
|
private static bool IsFocused;
|
||||||
|
|
||||||
_instance = obj.AddComponent<SkyHookManager>();
|
/// <summary>
|
||||||
|
/// Whether or not the event will be received only if the game window is focused.
|
||||||
|
/// </summary>
|
||||||
|
// ReSharper disable once MemberCanBePrivate.Global
|
||||||
|
// ReSharper disable once FieldCanBeMadeReadOnly.Global
|
||||||
|
public static bool RequireFocus = true;
|
||||||
|
|
||||||
DontDestroyOnLoad(_instance);
|
private bool _started;
|
||||||
|
|
||||||
return _instance;
|
/// <summary>
|
||||||
}
|
/// The key updated event data
|
||||||
|
/// </summary>
|
||||||
|
// ReSharper disable once MemberCanBePrivate.Global
|
||||||
|
public static readonly UnityEvent<SkyHookEvent> KeyUpdated = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The instance of sky hook manager. The instance will be crated if it does not exist
|
||||||
|
/// </summary>
|
||||||
|
// ReSharper disable once MemberCanBePrivate.Global
|
||||||
|
public static SkyHookManager Instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_instance) return _instance;
|
||||||
|
|
||||||
|
var obj = new GameObject("SkyHook Manager");
|
||||||
|
|
||||||
|
_instance = obj.AddComponent<SkyHookManager>();
|
||||||
|
|
||||||
|
DontDestroyOnLoad(_instance);
|
||||||
|
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HookCallback(SkyHookEvent ev)
|
||||||
|
{
|
||||||
|
if (RequireFocus && !IsFocused)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
KeyUpdated.Invoke(ev);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StartHook()
|
||||||
|
{
|
||||||
|
var result = SkyHookNative.StartHook(HookCallback);
|
||||||
|
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
throw new SkyHookException(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
_started = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void StopHook()
|
||||||
|
{
|
||||||
|
if (!_started) return;
|
||||||
|
|
||||||
|
var result = SkyHookNative.StopHook();
|
||||||
|
|
||||||
|
if (result != null)
|
||||||
|
{
|
||||||
|
throw new SkyHookException(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
_started = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Start()
|
||||||
|
{
|
||||||
|
Instance.StartHook();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Stop()
|
||||||
|
{
|
||||||
|
Instance.StopHook();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
Debug.Log("Destroy");
|
||||||
|
StopHook();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Run()
|
||||||
|
{
|
||||||
|
if (requireFocus)
|
||||||
|
{
|
||||||
|
IsFocused = Application.isFocused;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HookCallback(SkyHookEvent ev)
|
|
||||||
{
|
|
||||||
KeyUpdated.Invoke(ev);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StartHook()
|
|
||||||
{
|
|
||||||
var result = SkyHookNative.StartHook(HookCallback);
|
|
||||||
|
|
||||||
if (result != null)
|
|
||||||
{
|
|
||||||
throw new SkyHookException(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
_started = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void StopHook()
|
|
||||||
{
|
|
||||||
if (!_started) return;
|
|
||||||
|
|
||||||
var result = SkyHookNative.StopHook();
|
|
||||||
|
|
||||||
if (result != null)
|
|
||||||
{
|
|
||||||
throw new SkyHookException(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
_started = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Start()
|
|
||||||
{
|
|
||||||
Instance.StartHook();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Stop()
|
|
||||||
{
|
|
||||||
Instance.StopHook();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDestroy()
|
|
||||||
{
|
|
||||||
Debug.Log("Destroy");
|
|
||||||
StopHook();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Run()
|
|
||||||
{
|
|
||||||
if (requireFocus)
|
|
||||||
{
|
|
||||||
IsFocused = Application.isFocused;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
Reference in New Issue