void DrawMain()
    {
        if (target)
        {
            if (CustomHierarchyData.Contains(target.name) == false)
            {
                if (GUILayout.Button("Add selected"))
                {
                    CustomHierarchyData.Add(target.name);
                }
            }
            else
            {
                if (GUILayout.Button("Remove selected"))
                {
                    CustomHierarchyData.Remove(target.name);
                }
            }
        }



        foreach (CustomHElement elem in CustomHierarchyData.list)
        {
            bool b = opened.Contains(elem.Name);

            b = EditorGUILayout.Foldout(b, elem.Name);
            if (b && opened.Contains(elem.Name) == false)
            {
                opened.Add(elem.Name);
            }
            else if (!b)
            {
                opened.Remove(elem.Name);
            }

            if (b)
            {
                EditorGUI.indentLevel++;
                Vector3 currentPos = GUILayoutUtility.GetLastRect().position;
                //EditorGUI.DrawRect(new Rect(currentPos.x, currentPos.y+16, EditorWindow.GetWindow(typeof(Window_HierarchyCustomize)).maxSize.x - EditorWindow.GetWindow(typeof(Window_HierarchyCustomize)).minSize.x, 76), Color.grey);
                elem.color     = EditorGUILayout.ColorField("BGColor : ", elem.color);
                elem.fontColor = EditorGUILayout.ColorField("Font colot : ", elem.fontColor);
                elem.comment   = EditorGUILayout.DelayedTextField("Comment: ", elem.comment);

                if (GUILayout.Button("Remove", GUILayout.Width(60)))
                {
                    CustomHierarchyData.list.Remove(elem);
                    EditorApplication.RepaintHierarchyWindow();
                    return;
                }
                EditorGUI.indentLevel--;
            }
        }
    }
Exemplo n.º 2
0
    private static void HandleHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
    {
        if (CustomHierarchyData.On == false)
        {
            return;
        }
        Color fontColor       = Color.blue;
        Color backgroundColor = new Color(1f, 0f, 0f);

        var obj = EditorUtility.InstanceIDToObject(instanceID);

        if (obj != null)
        {
            GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;


            if (CustomHierarchyData.Contains(obj.name))
            {
                string comment    = "";
                Rect   offsetRect = new Rect(selectionRect.position + offset, selectionRect.size);
                if (Selection.instanceIDs.Contains(instanceID))
                {
                    fontColor       = Color.white;
                    backgroundColor = new Color(0.24f, 0.48f, 0.90f);
                    EditorGUI.DrawRect(selectionRect, backgroundColor);
                }
                else
                {
                    CustomHElement element = CustomHierarchyData.GetElement(obj.name);
                    fontColor       = element.fontColor;
                    backgroundColor = element.color;
                    comment         = element.comment;

                    Texture2D t    = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/CustomEditor/img/back.png", typeof(Texture2D));
                    Texture2D text = new Texture2D(t.width, t.height);
                    for (int x = 0; x < t.width; x++)
                    {
                        for (int y = 0; y < t.height; y++)
                        {
                            Color curColor = backgroundColor;
                            curColor.a = t.GetPixel(x, y).a;

                            text.SetPixel(x, y, curColor);
                        }
                    }
                    text.wrapMode = TextureWrapMode.Clamp;
                    text.Apply();
                    GUI.DrawTexture(selectionRect, text);
                }


                EditorGUI.LabelField(offsetRect, obj.name + " " + comment, new GUIStyle()
                {
                    normal = new GUIStyleState()
                    {
                        textColor = fontColor
                    },
                    fontStyle = FontStyle.Bold
                });
            }
        }
    }