Пример #1
0
        public void SetupGUI()
        {
            backgroundStyle = new GUIStyle(GUI.skin.box);
            backgroundStyle.contentOffset = new Vector2(2, 2);
            itemHeight = GUI.skin.label.CalcHeight(new GUIContent("text"), 100);

            selectedLabel = new GUIStyle(GUI.skin.label);
            selectedLabel.normal.background = FolderManagerGUI.CreatePixelTexture(1, new Color(0.4f, 0.4f, 0.4f));
        }
Пример #2
0
        private void DrawItem(MenuItem item, Rect groupRect)
        {
            if (item.separator)
            {
                if (Event.current.type == EventType.Repaint)
                {
                    FolderManagerGUI.Seperator(new Rect(backgroundStyle.contentOffset.x + 1, currentItemHeight + 1,
                                                        groupRect.width - 2, 1));
                }
                currentItemHeight += 3;
            }
            else
            {
                var labelRect = new Rect(backgroundStyle.contentOffset.x, currentItemHeight, groupRect.width,
                                         itemHeight);

                if (labelRect.Contains(Event.current.mousePosition))
                {
                    selectedPath = item.path;
                }

                var selected = selectedPath == item.path || selectedPath.Contains(item.path + "/");
                GUI.Label(labelRect, item.content, selected ? selectedLabel : GUI.skin.label);

                if (item.group)
                {
                    GUI.DrawTexture(
                        new Rect(labelRect.x + labelRect.width - 12, labelRect.y + (labelRect.height - 12) / 2, 12, 12),
                        Texture2D.blackTexture);
                    if (selected)
                    {
                        item.groupPos = new Rect(groupRect.x + groupRect.width + 4, groupRect.y + currentItemHeight - 2,
                                                 0, 0);
                        groupToDraw = item;
                    }
                }
                else if (selected && (Event.current.type == EventType.MouseDown ||
                                      Event.current.button != 1 && Event.current.type == EventType.MouseUp))
                {
                    item.Execute();
                    close = true;
                    Event.current.Use();
                }

                currentItemHeight += itemHeight;
            }
        }