Guest User

Untitled

a guest
Apr 23rd, 2022
701
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1.  
  2. using System;
  3. using System.IO;
  4. using System.Text;
  5. using UnityEngine.SceneManagement;
  6. using UnityEngine;
  7. using UnityEditor;
  8. using UnityEngine.Events;
  9. using UnityEngine.Scripting;
  10. using UnityEditorInternal;
  11. using UnityEditor.Scripting;
  12. using UnityEngine.TestTools;
  13. using Unity.Profiling;
  14. using UnityEditor.Profiling;
  15. using UnityEditor.SceneManagement;
  16. using UnityEditor.VersionControl;
  17. using UnityEngine.Profiling;
  18. using System.Reflection;
  19.  
  20. public static class GlobalKeyEvents
  21. {
  22. // Exposed delegates to hook up your methods to them.
  23. public static event Action<KeyCode, EventModifiers> GlobalKeyDown;
  24. public static event Action<KeyCode, EventModifiers> GlobalKeyUp;
  25. public static event Action AnyShortcutTriggered;
  26.  
  27. [InitializeOnLoadMethod]
  28. private static void EditorInit()
  29. {
  30. RegisterToGlobalEventHandler();
  31. RegisterToTriggeredAnyShortcut();
  32. }
  33.  
  34. private static bool OnAnyShortcutTriggered()
  35. {
  36. AnyShortcutTriggered?.Invoke();
  37. return true;
  38. }
  39.  
  40.  
  41. private static void RegisterToGlobalEventHandler()
  42. {
  43. FieldInfo info = typeof(EditorApplication).GetField("globalEventHandler", BindingFlags.Static | BindingFlags.NonPublic);
  44. EditorApplication.CallbackFunction value = (EditorApplication.CallbackFunction)info.GetValue(null);
  45. value += OnGlobalKeyPressed;
  46. info.SetValue(null, value);
  47. }
  48.  
  49. private static void RegisterToTriggeredAnyShortcut()
  50. {
  51. FieldInfo info = typeof(EditorApplication).GetField("doPressedKeysTriggerAnyShortcut", BindingFlags.Static | BindingFlags.NonPublic);
  52. Func<bool> value = (Func<bool>)info.GetValue(null);
  53. value += OnAnyShortcutTriggered;
  54. info.SetValue(null, value);
  55. }
  56.  
  57. private static void OnGlobalKeyPressed()
  58. {
  59.  
  60.  
  61.  
  62. if (Event.current.type == EventType.KeyDown)
  63. {
  64.  
  65. KeyCode key1 = Event.current.keyCode;
  66.  
  67.  
  68. switch (key1)
  69. {
  70. case KeyCode.W:
  71. //Debug.Log("W!");
  72. break;
  73. case KeyCode.F11:
  74. case KeyCode.F12:
  75. {
  76.  
  77. if (Application.isPlaying)
  78. {
  79. #if UNITY_EDITOR
  80. UnityEditor.EditorApplication.isPlaying = false;
  81.  
  82. #endif
  83.  
  84.  
  85. }
  86. else
  87. {
  88. UnityEditor.AssetDatabase.Refresh();
  89. UnityEditor.EditorApplication.EnterPlaymode();
  90. }
  91.  
  92.  
  93. }
  94. break;
  95.  
  96. }
  97.  
  98.  
  99.  
  100.  
  101.  
  102. GlobalKeyDown?.Invoke(Event.current.keyCode, Event.current.modifiers);
  103. }
  104. else if (Event.current.type == EventType.KeyUp)
  105. {
  106. GlobalKeyUp?.Invoke(Event.current.keyCode, Event.current.modifiers);
  107. }
  108. }
  109. }
  110.  
Advertisement
Add Comment
Please, Sign In to add comment