123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System;
- using System.Collections;
- using System.Reflection;
- using UnityEditor;
- using UnityEngine;
- namespace AIPagedLod
- {
- [InitializeOnLoad]
- public class EditorMonoBehaviour
- {
- static EditorMonoBehaviour()
- {
- var type = System.Reflection.Assembly.Load("UnityEditor.dll").GetType("UnityEditor.EditorAssemblies");
- var method = type.GetMethod("SubclassesOf", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { typeof(Type) }, null);
- var e = method.Invoke(null, new object[] { typeof(EditorMonoBehaviour) }) as IEnumerable;
- foreach (Type editorMonoBehaviourClass in e)
- {
- method = editorMonoBehaviourClass.BaseType.GetMethod("OnEditorMonoBehaviour", BindingFlags.NonPublic | BindingFlags.Instance);
- if (method != null)
- {
- method.Invoke(System.Activator.CreateInstance(editorMonoBehaviourClass), new object[0]);
- }
- }
- }
- private void OnEditorMonoBehaviour()
- {
- EditorApplication.update += Update;
- EditorApplication.hierarchyWindowChanged += OnHierarchyWindowChanged;
- EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindowItemOnGUI;
- EditorApplication.projectWindowChanged += OnProjectWindowChanged;
- EditorApplication.projectWindowItemOnGUI += ProjectWindowItemOnGUI;
- EditorApplication.modifierKeysChanged += OnModifierKeysChanged;
- EditorApplication.CallbackFunction function = () => OnGlobalEventHandler(Event.current);
- FieldInfo info = typeof(EditorApplication).GetField("globalEventHandler", BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic);
- EditorApplication.CallbackFunction functions = (EditorApplication.CallbackFunction)info.GetValue(null);
- function += function;
- info.SetValue(null, (object)functions);
- EditorApplication.searchChanged += OnSearchChanged;
- Start();
- }
- public virtual void Start()
- { }
- public virtual void Update()
- { }
- public virtual void OnHierarchyWindowChanged()
- { }
- public virtual void HierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
- { }
- public virtual void OnProjectWindowChanged()
- { }
- public virtual void ProjectWindowItemOnGUI(string guid, Rect selectionRect)
- { }
- public virtual void OnModifierKeysChanged()
- { }
- public virtual void OnGlobalEventHandler(Event e)
- { }
- public virtual void OnSearchChanged()
- { }
- public virtual void OnPlaymodeStateChanged(PlayModeState playModeState)
- { }
- public enum PlayModeState
- {
- Playing,
- Paused,
- Stop,
- PlayingOrWillChangePlayMode
- }
- }
- }
|