1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System;
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- using Object = UnityEngine.Object;
- namespace EnhancedHierarchy
- {
- public static partial class EnhancedHierarchy
- {
- public const int UNLAYERED = 0;
- public const string UNTAGGED = "Untagged";
- public const float ALPHA_THRESHOLD = 0.01f;
- private static readonly GUIContent trailingContent = new GUIContent("...");
- public static string GameObjectName { get; private set; }
- public static string GameObjectTag { get; private set; }
- public static bool IsFirstVisible { get; private set; }
- public static bool IsRepaintEvent { get; private set; }
- public static bool IsGameObject { get; private set; }
- public static bool HasTag { get; private set; }
- public static bool HasLayer { get; private set; }
- public static float LeftIconsWidth { get; private set; }
- public static float RightIconsWidth { get; private set; }
- public static float LabelSize { get; private set; }
- public static Rect RawRect { get; private set; }
- public static Rect FullSizeRect { get; private set; }
- public static Rect FinalRect { get; private set; }
- public static Rect SelectionRect { get; private set; }
- public static Rect LabelOnlyRect { get; private set; }
- public static Color CurrentColor { get; private set; }
- public static Vector2 SelectionStart { get; private set; }
- public static GUIStyle CurrentStyle { get; private set; }
- public static GameObject CurrentGameObject { get; private set; }
- public static List<Object> DragSelection { get; private set; }
- public static readonly List<Component> Components = new List<Component>(100);
- public static EventType LastEventType { get; private set; }
- public static void SetItemInformation(int id, Rect rect)
- {
- if (!Preferences.Enabled)
- return;
- using (ProfilerSample.Get("Enhanced Hierarchy"))
- using (ProfilerSample.Get())
- try
- {
- CurrentGameObject = EditorUtility.InstanceIDToObject(id) as GameObject;
- IsGameObject = CurrentGameObject;
- IsRepaintEvent = Event.current.type == EventType.Repaint;
- IsFirstVisible = Event.current.type != LastEventType;
- LastEventType = Event.current.type;
- if (IsGameObject)
- {
- GameObjectName = CurrentGameObject.name;
- try
- {
- GameObjectTag = CurrentGameObject.tag;
- }
- catch
- {
- // I couldn't reproduce this, but it can happen
- if (Preferences.DebugEnabled)
- Debug.LogWarning("Invalid gameobject tag", CurrentGameObject);
- GameObjectTag = "Untagged";
- }
- LabelSize = EditorStyles.label.CalcSize(Utility.GetTempGUIContent(GameObjectName)).x;
- LabelSize += Reflected.IconWidth + 5f; // Icon size
- var labelOnlyRect = rect;
- labelOnlyRect.xMax = labelOnlyRect.xMin + LabelSize;
- LabelOnlyRect = labelOnlyRect;
- HasTag = !CurrentGameObject.CompareTag(UNTAGGED) || !Preferences.HideDefaultTag;
- HasLayer = CurrentGameObject.layer != UNLAYERED || !Preferences.HideDefaultLayer;
- CurrentStyle = Utility.GetHierarchyLabelStyle(CurrentGameObject);
- CurrentColor = CurrentStyle.normal.textColor;
- CurrentGameObject.GetComponents(Components);
- }
- if (IsFirstVisible)
- FinalRect = RawRect;
- RawRect = rect;
- rect.xMin = 0f;
- //rect.xMax = EditorGUIUtility.currentViewWidth;
- FullSizeRect = rect;
- }
- catch (Exception e)
- {
- Utility.LogException(e);
- }
- }
- }
- }
|