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)); }
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; } }