Пример #1
0
        private static void PaintText(HierarchyItem item)
        {
            Color32 color;

            if (item.PrettyObject.UseDefaultTextColor || item.IsSelected)
            {
                color = EditorColors.GetDefaultTextColor(EditorUtils.IsHierarchyFocused, item.IsSelected, item.GameObject.activeInHierarchy);
            }
            else
            {
                color   = item.PrettyObject.TextColor;
                color.a = item.GameObject.activeInHierarchy ? EditorColors.TextAlphaObjectEnabled : EditorColors.TextAlphaObjectDisabled;
            }

            GUIStyle labelGUIStyle = new GUIStyle
            {
                normal = new GUIStyleState {
                    textColor = color
                },
                fontStyle = item.PrettyObject.FontStyle,
                alignment = item.PrettyObject.Alignment,
                fontSize  = item.PrettyObject.FontSize,
                font      = item.PrettyObject.Font
            };

            if (item.PrettyObject.TextDropShadow)
            {
                EditorGUI.DropShadowLabel(item.TextRect, item.PrettyObject.name, labelGUIStyle);
            }
            else
            {
                EditorGUI.LabelField(item.TextRect, item.PrettyObject.name, labelGUIStyle);
            }
        }
Пример #2
0
 private static void PaintEditPrefabIcon(HierarchyItem item)
 {
     if (PrefabUtility.GetCorrespondingObjectFromOriginalSource(item.GameObject) != null && PrefabUtility.IsAnyPrefabInstanceRoot(item.GameObject))
     {
         GUI.DrawTexture(item.EditPrefabIconRect, EditorGUIUtility.IconContent("ArrowNavigationRight").image);
     }
 }
Пример #3
0
 private static void PaintHoverOverlay(HierarchyItem item)
 {
     if (item.IsHovered && !item.IsSelected)
     {
         EditorGUI.DrawRect(item.BackgroundRect, EditorColors.HoverOverlay);
     }
 }
Пример #4
0
 private static void PaintEditPrefabIcon(HierarchyItem item)
 {
     if (PrefabUtility.GetCorrespondingObjectFromOriginalSource(item.GameObject) != null && PrefabUtility.IsAnyPrefabInstanceRoot(item.GameObject))
     {
         Texture icon = EditorGUIUtility.IconContent("ArrowNavigationRight").image;
         GUI.DrawTexture(item.EditPrefabIconRect, icon, ScaleMode.StretchToFill, true, 0f, EditorColors.EditPrefabIconTintColor, 0f, 0f);
     }
 }
Пример #5
0
        private static void PaintCollapseToggleIcon(HierarchyItem item)
        {
            if (item.GameObject.transform.childCount > 0)
            {
                Type         sceneHierarchyWindowType = typeof(Editor).Assembly.GetType("UnityEditor.SceneHierarchyWindow");
                PropertyInfo sceneHierarchyWindow     = sceneHierarchyWindowType.GetProperty("lastInteractedHierarchyWindow", BindingFlags.Public | BindingFlags.Static);

                int[] expandedIDs = (int[])sceneHierarchyWindowType.GetMethod("GetExpandedIDs", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(sceneHierarchyWindow.GetValue(null), null);

                string iconID = expandedIDs.Contains(item.InstanceID) ? "IN Foldout on" : "IN foldout";

                GUI.DrawTexture(item.CollapseToggleIconRect, EditorGUIUtility.IconContent(iconID).image, ScaleMode.StretchToFill, true, 0f, EditorColors.CollapseIconTintColor, 0f, 0f);
            }
        }
Пример #6
0
        private static void PaintBackground(HierarchyItem item)
        {
            Color32 color;

            if (item.PrettyObject.UseDefaultBackgroundColor || item.IsSelected)
            {
                color = EditorColors.GetDefaultBackgroundColor(EditorUtils.IsHierarchyFocused, item.IsSelected);
            }
            else
            {
                color = item.PrettyObject.BackgroundColor;
            }

            EditorGUI.DrawRect(item.BackgroundRect, color);
        }
Пример #7
0
        private static void HandleHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
        {
            UnityEngine.Object instance = EditorUtility.InstanceIDToObject(instanceID);

            if (instance != null)
            {
                PrettyObject prettyObject = (instance as GameObject).GetComponent <PrettyObject>();

                if (prettyObject != null)
                {
                    HierarchyItem item = new HierarchyItem(instanceID, selectionRect, prettyObject);
                    PaintBackground(item);
                    PaintHoverOverlay(item);
                    PaintText(item);
                    PaintCollapseToggleIcon(item);
                    PaintPrefabIcon(item);
                    PaintEditPrefabIcon(item);
                }
            }
        }
Пример #8
0
        private static void PaintPrefabIcon(HierarchyItem item)
        {
            Texture icon = EditorGUIUtility.ObjectContent(EditorUtility.InstanceIDToObject(item.InstanceID), null).image;

            // The above does not account for the selection highlight, so we do it manually...
            if (EditorUtils.IsHierarchyFocused && item.IsSelected)
            {
                if (icon.name == "d_Prefab Icon" || icon.name == "Prefab Icon")
                {
                    icon = EditorGUIUtility.IconContent("d_Prefab On Icon").image;
                }
                else if (icon.name == "GameObject Icon") // Dark theme is fine by default here...
                {
                    icon = EditorGUIUtility.IconContent("GameObject On Icon").image;
                }
            }

            // Alpha of the icon is affected by the object's active/inactive state
            Color color = item.GameObject.activeInHierarchy ? Color.white : new Color(1f, 1f, 1f, 0.5f);

            //GUI.DrawTexture(item.PrefabIconRect, tex, ScaleMode.StretchToFill, true, 0f, color, 0f, 0f);
            GUI.DrawTexture(item.PrefabIconRect, icon, ScaleMode.StretchToFill, true, 0f, color, 0f, 0f);
        }
Пример #9
0
        private static void PaintText(HierarchyItem item)
        {
            Color color = item.IsSelected ? EditorColors.GetDefaultTextColor(EditorUtils.IsHierarchyFocused, item.IsSelected) : item.PrettyObject.TextColor;

            GUIStyle labelGUIStyle = new GUIStyle
            {
                normal = new GUIStyleState {
                    textColor = color
                },
                fontStyle = item.PrettyObject.FontStyle,
                alignment = item.PrettyObject.Alignment,
                fontSize  = item.PrettyObject.FontSize,
                font      = item.PrettyObject.Font
            };

            if (item.PrettyObject.TextDropShadow)
            {
                EditorGUI.DropShadowLabel(item.TextRect, item.PrettyObject.name, labelGUIStyle);
            }
            else
            {
                EditorGUI.LabelField(item.TextRect, item.PrettyObject.name, labelGUIStyle);
            }
        }
Пример #10
0
        private static void PaintPrefabIcon(HierarchyItem item)
        {
            GUIContent content = EditorGUIUtility.ObjectContent(EditorUtility.InstanceIDToObject(item.InstanceID), null);

            GUI.DrawTexture(item.PrefabIconRect, content.image);
        }
Пример #11
0
        private static void PainBackground(HierarchyItem item)
        {
            Color32 color = item.IsSelected ? EditorColors.GetDefaultBackgroundColor(EditorUtils.IsHierarchyFocused, item.IsSelected) : item.PrettyObject.BackgroundColor;

            EditorGUI.DrawRect(item.BackgroundRect, color);
        }