| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | using System.Linq;using UnityEditor;using UnityEngine;namespace EnhancedHierarchy.Icons {    public sealed class GameObjectIcon : IconBase {        private GUIContent lastContent;        public override string Name { get { return "GameObject Icon"; } }        public override IconPosition Side { get { return IconPosition.All; } }        public override float Width { get { return lastContent.image ? base.Width : 0f; } }        public override Texture2D PreferencesPreview { get { return AssetPreview.GetMiniTypeThumbnail(typeof(GameObject)); } }        //public override string PreferencesTooltip { get { return "Some tag for the tooltip here"; } }        public override void Init() {            if (lastContent == null)                lastContent = new GUIContent();            lastContent.text = string.Empty;            lastContent.image = Preferences.HideDefaultIcon ? // Fix #46                Reflected.GetObjectIcon(EnhancedHierarchy.CurrentGameObject) :                AssetPreview.GetMiniThumbnail(EnhancedHierarchy.CurrentGameObject);            lastContent.tooltip = Preferences.Tooltips && !Preferences.RelevantTooltipsOnly ? "Change Icon" : string.Empty;        }        public override void DoGUI(Rect rect) {            using(ProfilerSample.Get()) {                rect.yMin++;                rect.xMin++;                GUI.changed = false;                GUI.Button(rect, lastContent, EditorStyles.label);                if (!GUI.changed)                    return;                var affectedObjsList = GetSelectedObjectsAndCurrent();                var affectedObjsEnum = affectedObjsList.AsEnumerable();                var changeMode = AskChangeModeIfNecessary(affectedObjsList, Preferences.IconAskMode.Value, "Change Icons", "Do you want to change children icons as well?");                switch (changeMode) {                    case ChildrenChangeMode.ObjectAndChildren:                        affectedObjsEnum = affectedObjsEnum.SelectMany(go => go.GetComponentsInChildren<Transform>(true).Select(t => t.gameObject));                        break;                }                affectedObjsEnum = affectedObjsEnum.Distinct();                var affectedObjsArray = affectedObjsEnum.ToArray();                foreach (var obj in affectedObjsArray)                    Undo.RegisterCompleteObjectUndo(obj, "Icon Changed");                Reflected.ShowIconSelector(affectedObjsArray, rect, true);            }        }    }}
 |