public static Vector2 GetSize(string title, ColorLegendEntry[] entries) { Vector2 titleSize = titleStyle.CalcSize(new GUIContent(title)); var entrySizes = entries.Select(x => entryLabelStyle.CalcSize(new GUIContent(x.text))); float maxWidth = Mathf.Max(titleSize.x, entrySizes.Max(s => s.x) + ColorRectWidget.GetSize().x); float height = titleSize.y + entrySizes.Sum(s => s.y); return(new Vector2(maxWidth, height)); }
public static void Draw(Rect rect, string title, ColorLegendEntry[] entries) { var titleContent = new GUIContent(title); Vector2 titleSize = titleStyle.CalcSize(titleContent); var titleRect = new Rect(rect.x, rect.y, titleSize.x, titleSize.y); GUI.Label(titleRect, titleContent, titleStyle); var colorRectSize = ColorRectWidget.GetSize(); for (int i = 0; i < entries.Length; i++) { var colorRectOrigin = new Vector2(rect.x, rect.y + titleSize.y + colorRectSize.y * i); var colorRect = new Rect(colorRectOrigin.x, colorRectOrigin.y, colorRectSize.x, colorRectSize.y); ColorRectWidget.Draw(colorRect, entries[i].color); var labelOrigin = new Vector2(rect.x + colorRectSize.x, rect.y + titleSize.y + colorRectSize.y * i); var labelContent = new GUIContent(entries[i].text); var labelSize = entryLabelStyle.CalcSize(labelContent); var labelRect = new Rect(labelOrigin.x, labelOrigin.y, labelSize.x, labelSize.y); GUI.Label(labelRect, labelContent, entryLabelStyle); } }