| using UnityEngine; | 
| using UnityEditor; | 
| using System; | 
| using System.Collections.Generic; | 
| using qtools.qhierarchy.pdata; | 
| using qtools.qhierarchy.phierarchy; | 
| using UnityEditor.Callbacks; | 
| using qtools.qhierarchy.phelper; | 
|   | 
| namespace qtools.qhierarchy | 
| { | 
|     [InitializeOnLoad] | 
|     public class QHierarchyInitializer | 
|     { | 
|         private static QHierarchy hierarchy; | 
|   | 
|         static QHierarchyInitializer() | 
|         { | 
|             EditorApplication.update -= update; | 
|             EditorApplication.update += update; | 
|   | 
|             EditorApplication.hierarchyWindowItemOnGUI -= hierarchyWindowItemOnGUIHandler; | 
|             EditorApplication.hierarchyWindowItemOnGUI += hierarchyWindowItemOnGUIHandler; | 
|              | 
|             EditorApplication.hierarchyWindowChanged   -= hierarchyWindowChanged; | 
|             EditorApplication.hierarchyWindowChanged   += hierarchyWindowChanged; | 
|   | 
|             Undo.undoRedoPerformed -= undoRedoPerformed; | 
|             Undo.undoRedoPerformed += undoRedoPerformed; | 
|         } | 
|   | 
|         static void undoRedoPerformed() | 
|         { | 
|             EditorApplication.RepaintHierarchyWindow();           | 
|         } | 
|   | 
|         static void init() | 
|         {        | 
|             hierarchy = new QHierarchy(); | 
|         }  | 
|   | 
|         static void update() | 
|         { | 
|             if (hierarchy == null) init(); | 
|             QObjectListManager.getInstance().update(); | 
|         } | 
|   | 
|         static void hierarchyWindowItemOnGUIHandler(int instanceId, Rect selectionRect) | 
|         { | 
|             if (hierarchy == null) init(); | 
|              hierarchy.hierarchyWindowItemOnGUIHandler(instanceId, selectionRect); | 
|         } | 
|   | 
|         static void hierarchyWindowChanged() | 
|         { | 
|             if (hierarchy == null) init(); | 
|             QObjectListManager.getInstance().validate(); | 
|         } | 
|     } | 
| } |