Пример #1
0
 private void OnEnable()
 {
     createList();
     HierarchyDividerDrawing.LoadMaterials();
 }
Пример #2
0
            void subscribeListDrawing(ReorderableList list)
            {
                list.drawElementCallback =
                    (Rect rect, int index, bool isActive, bool isFocused) => {
                    if (dividerPreset != null && dividerPreset.Dividers[index] != null)
                    {
                        setBaseValues(dividerPreset.Dividers[index]);
                    }
                    SerializedProperty element = list.serializedProperty.GetArrayElementAtIndex(index);

                    float height = minHeight;

                    float rightOffset = 33;
                    rect.x += (EditorGUILayout.GetControlRect().width - contentWidth - rightOffset - 10f) / 2f;

                    addHeight(ref height, ref rect, 5);

                    bool foldoutButton = EditorGUI.DropdownButton(new Rect(rect.x - 2, rect.y - 2, contentWidth + rightOffset, EditorGUIUtility.singleLineHeight), new GUIContent(""), FocusType.Keyboard, EditorStyles.toolbar);
                    bool foldout       = dividerPreset.Dividers[index].foldOut;
                    foldout = foldoutButton ? !foldout : foldout;
                    dividerPreset.Dividers[index].foldOut = foldout;

                    string _label = element.FindPropertyRelative("Label").stringValue;
                    _label = element.FindPropertyRelative("Name").stringValue == "" ? "*new*" : _label;

                    GUIStyle style = new GUIStyle(EditorStyles.label);
                    style.alignment = TextAnchor.MiddleCenter;

                    if (dividerPreset.Dividers[index].ColoredFont)
                    {
                        style.normal.textColor = dividerPreset.Dividers[index].FontColor;
                    }

                    if (!dividerPreset.Dividers[index].BoldFont && !dividerPreset.Dividers[index].ItalicFont)
                    {
                        style.fontStyle = FontStyle.Normal;
                    }
                    if (dividerPreset.Dividers[index].BoldFont && !dividerPreset.Dividers[index].ItalicFont)
                    {
                        style.fontStyle = FontStyle.Bold;
                    }
                    else if (!dividerPreset.Dividers[index].BoldFont && dividerPreset.Dividers[index].ItalicFont)
                    {
                        style.fontStyle = FontStyle.Italic;
                    }
                    else if (dividerPreset.Dividers[index].BoldFont && dividerPreset.Dividers[index].ItalicFont)
                    {
                        style.fontStyle = FontStyle.BoldAndItalic;
                    }

                    style.alignment = TextAnchor.MiddleCenter;

                    float _headerSpriteSize = 13f;

                    if (dividerPreset.Dividers[index].ColoredBG)
                    {
                        drawRect(new Rect(rect.x + rightOffset, rect.y, contentWidth - rightOffset, rect.height), dividerPreset.Dividers[index].BGColor, EditorGUIUtility.singleLineHeight - 2);
                    }

                    if (dividerPreset.Dividers[index].HasSprite_left &&
                        dividerPreset.Dividers[index].LeftSprite != null)
                    {
                        HierarchyDividerDrawing
                        .DrawSprite(new Rect(rect.x + 14, rect.y - 1f, _headerSpriteSize, _headerSpriteSize),
                                    dividerPreset.Dividers[index].LeftSprite.texture, _headerSpriteSize);
                    }

                    if (dividerPreset.Dividers[index].HasSprite_right &&
                        dividerPreset.Dividers[index].RightSprite != null)
                    {
                        HierarchyDividerDrawing
                        .DrawSprite(new Rect(rect.x + contentWidth + 7, rect.y - 1f, _headerSpriteSize, _headerSpriteSize),
                                    dividerPreset.Dividers[index].RightSprite.texture, _headerSpriteSize);
                    }

                    EditorGUI.LabelField(new Rect(rect.x + rightOffset, rect.y, contentWidth - rightOffset, EditorGUIUtility.singleLineHeight), _label, style);

                    EditorGUI.Foldout(new Rect(rect.x + 1f, rect.y, contentWidth + rightOffset, EditorGUIUtility.singleLineHeight), foldout, "", EditorStyles.foldout);

                    if (foldout)
                    {
                        addHeight(ref height, ref rect, EditorGUIUtility.singleLineHeight);
                        EditorGUI.LabelField(new Rect(rect.x - 2, rect.y - 1, contentWidth + rightOffset, 175), "", EditorStyles.textArea);

                        addHeight(ref height, ref rect, 4);

                        SinglePropertyField(ref rect, ref height, element, "Name", "Text", 50);

                        InlinePropertyField(rect, 0f, contentWidth - 90f, element, "PreSuffix", "Pre-/Suffix", 70);
                        InlinePropertyField(rect, contentWidth - 85f, 85f, element, "PreSuffixCount", "amount", 50);
                        addHeight(ref height, ref rect, minHeight);

                        InlinePropertyField(rect, 0f, contentWidth - 120f, element, "BoldFont", "bold", 50);
                        InlinePropertyField(rect, contentWidth - 115f, 115, element, "ItalicFont", "italic", 50);
                        addHeight(ref height, ref rect, minHeight);

                        InlinePropertyField(rect, 0f, contentWidth - 120f, element, "ColoredFont", "colored", 50);
                        InlinePropertyField(rect, contentWidth - 115f, 115f, element, "FontColor", "font color",
                                            60);
                        addHeight(ref height, ref rect, minHeight);

                        InlinePropertyField(rect, 0f, contentWidth - 110f, element, "ColoredBG", "colored bg", 65);
                        InlinePropertyField(rect, contentWidth - 105f, 105f, element, "BGColor", "bg color", 50);
                        addHeight(ref height, ref rect, minHeight);

                        float _spriteSize = EditorGUIUtility.singleLineHeight * 1.25f;

                        InlinePropertyField(rect, 0f, 15f, element, "HasSprite_left");
                        InlinePropertyField(rect, 20f, contentWidth - 20f, element, "LeftSprite", "left Sprite", 70);

                        Sprite leftSprite = dividerPreset.Dividers[index].LeftSprite;
                        if (leftSprite != null)
                        {
                            HierarchyDividerDrawing
                            .DrawSprite(new Rect(rect.x + contentWidth + 5f, rect.y, _spriteSize, _spriteSize),
                                        leftSprite.texture, _spriteSize);
                        }

                        addHeight(ref height, ref rect, minHeight);

                        InlinePropertyField(rect, 0f, 15f, element, "HasSprite_right");
                        InlinePropertyField(rect, 20f, contentWidth - 20f, element, "RightSprite", "right Sprite",
                                            70);

                        Sprite rightSprite = dividerPreset.Dividers[index].RightSprite;
                        if (rightSprite != null)
                        {
                            HierarchyDividerDrawing
                            .DrawSprite(new Rect(rect.x + contentWidth + 5f, rect.y, _spriteSize, _spriteSize),
                                        rightSprite.texture, _spriteSize);
                        }

                        addHeight(ref height, ref rect, 5f);
                    }

                    dividerPreset.Dividers[index].SetLabel();

                    SetListElementHeight(index, height, rect);
                };
            }