private static bool DrawOpt(GUIContent label, HierarchyCustomiserOption opt)
        {
            bool res = false;

            if (res = GUILayout.Button(GC_ClearOpt, EditorStyles.miniButton, GUILayout.Width(18)))
            {
                opt.icon     = null;
                opt.iconLeft = false;
                opt.iconOffs = 0;
            }

            if (label == null)
            {               // is for tag when label = null
                opt.tag = EditorGUILayout.TagField(opt.tag, GUILayout.Width(100));
                GUILayout.FlexibleSpace();
            }
            else
            {
                GUILayout.Label(label, GUILayout.ExpandWidth(true));
            }

            opt.icon     = (Texture2D)EditorGUILayout.ObjectField(opt.icon, typeof(Texture2D), false, GUILayout.Width(30));
            opt.iconLeft = EditorGUILayout.Toggle(opt.iconLeft, GUILayout.Width(20));
            opt.iconOffs = EditorGUILayout.IntField(opt.iconOffs, GUILayout.Width(30));
            GUILayout.Space(5);
            opt.textColor = EditorGUILayout.ColorField(opt.textColor, GUILayout.Width(40));
            opt.backColor = EditorGUILayout.ColorField(opt.backColor, GUILayout.Width(40));
            return(res);
        }
        private static void HierarchyOnGUI(int instanceID, Rect rect)
        {
            if (Event.current.type != EventType.Repaint)
            {
                return;
            }
            GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;

            if (go == null)
            {
                return;
            }

            // get options
            HierarchyCustomiserOption opt1 = Settings.layerOps[go.layer];
            HierarchyCustomiserOption opt2 = null; Settings.TagCache.TryGetValue(go.tag, out opt2);

            // draw text
            if (!Selection.instanceIDs.Contains(instanceID))
            {
                Color textCol   = (opt2 != null && opt2.textColor.a > 0f ? opt2.textColor : opt1.textColor);
                Color backColor = (opt2 != null && opt2.backColor.a > 0f ? opt2.backColor : opt1.backColor);

                if (backColor.a > 0f)
                {
                    GUI.backgroundColor            = backColor;
                    Styles.Label2.normal.textColor = (textCol.a > 0f ? textCol : TreeView.DefaultStyles.foldoutLabel.normal.textColor);
                    Styles.Label2.padding.left     = (int)rect.x;
                    Rect r = rect; r.width += r.width; r.x = 0;
                    Styles.Label2.Draw(r, TempGUIContent(go.name), false, false, false, false);
                    GUI.backgroundColor = Color.white;
                }

                else if (textCol.a > 0f)
                {
                    Styles.Label1.normal.textColor = textCol;
                    Styles.Label1.Draw(rect, TempGUIContent(go.name), false, false, false, false);
                }
            }

            // draw icons
            if (opt1.icon != null)
            {
                Rect r = rect;
                r.width = r.height;
                r.x     = (opt1.iconLeft ? 1f + opt1.iconOffs : rect.xMax - (r.width + 3f + opt1.iconOffs));
                GUI.DrawTexture(r, opt1.icon);
            }

            if (opt2 != null && opt2.icon != null)
            {
                Rect r = rect;
                r.width = r.height;
                r.x     = (opt2.iconLeft ? 1f + opt2.iconOffs : rect.xMax - (r.width + 3f + opt2.iconOffs));
                GUI.DrawTexture(r, opt2.icon);
            }
        }
Esempio n. 3
0
 public void InitNew()
 {
     tagOps   = new List <HierarchyCustomiserOption>();
     layerOps = new HierarchyCustomiserOption[32];
     for (int i = 0; i < layerOps.Length; i++)
     {
         layerOps[i] = new HierarchyCustomiserOption();
     }
 }