// Cristian Pop - https://boxophobic.com/ using UnityEngine; using UnityEditor; using Boxophobic.Constants; using Boxophobic.Utility; namespace Boxophobic.StyledGUI { public partial class StyledGUI { public static void DrawInspectorCategory(string bannerText) { GUI.contentColor = Color.white; GUI.color = new Color(1, 1, 1, 0.9f); var fullRect = GUILayoutUtility.GetRect(0, 0, 18, 0); var fillRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 18); var lineRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 1); var titleRect = new Rect(fullRect.position.x - 1, fullRect.position.y, fullRect.width, 18); EditorGUI.DrawRect(fillRect, Constant.CategoryColor); EditorGUI.DrawRect(lineRect, Constant.LineColor); bannerText = FormatBannerText(bannerText); GUI.Label(titleRect, bannerText, Constant.HeaderStyle); GUI.color = Color.white; } public static void DrawInspectorCategory(string bannerText, string message) { GUI.contentColor = Color.white; GUI.color = new Color(1, 1, 1, 0.9f); var fullRect = GUILayoutUtility.GetRect(0, 0, 18, 0); var fillRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 18); var lineRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 1); var titleRect = new Rect(fullRect.position.x - 1, fullRect.position.y, fullRect.width, 18); EditorGUI.DrawRect(fillRect, Constant.CategoryColor); EditorGUI.DrawRect(lineRect, Constant.LineColor); bannerText = FormatBannerText(bannerText); message = BoxoUtils.FormatMessage(message); var bannerContext = new GUIContent(bannerText, message); GUI.Label(titleRect, bannerContext, Constant.HeaderStyle); GUI.color = Color.white; } public static bool DrawInspectorCategory(string bannerText, bool enabled, bool colapsable, float top, float down) { GUI.contentColor = Color.white; GUI.color = new Color(1, 1, 1, 0.9f); if (colapsable) { if (enabled) { GUILayout.Space(top); } else { GUILayout.Space(0); } } else { GUILayout.Space(top); } var fullRect = GUILayoutUtility.GetRect(0, 0, 18, 0); var fillRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 18); var lineRect = new Rect(0, fullRect.y - 1, fullRect.xMax + 10, 1); var titleRect = new Rect(fullRect.position.x - 1, fullRect.position.y, fullRect.width, 18); var arrowRect = new Rect(fullRect.position.x - 15, fullRect.position.y - 1, fullRect.width, 18); if (colapsable) { if (GUI.Button(arrowRect, "", GUIStyle.none)) { enabled = !enabled; } } else { enabled = true; } EditorGUI.DrawRect(fillRect, Constant.CategoryColor); EditorGUI.DrawRect(lineRect, Constant.LineColor); bannerText = FormatBannerText(bannerText); GUI.Label(titleRect, bannerText, Constant.HeaderStyle); GUI.color = new Color(1, 1, 1, 0.39f); if (colapsable) { if (enabled) { GUI.Label(arrowRect, "▼", Constant.HeaderStyle); GUILayout.Space(down); } else { GUI.Label(arrowRect, "►", Constant.HeaderStyle); GUILayout.Space(0); } } else { GUILayout.Space(down); } GUI.color = Color.white; return enabled; } public static bool DrawInspectorCategory(string bannerText, bool enabled, bool colapsable, string message, float top, float down) { GUI.contentColor = Color.white; GUI.color = new Color(1, 1, 1, 0.9f); if (colapsable) { if (enabled) { GUILayout.Space(top); } else { GUILayout.Space(0); } } else { GUILayout.Space(top); } var fullRect = GUILayoutUtility.GetRect(0, 0, 18, 0); var fillRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 18); var lineRect = new Rect(0, fullRect.y - 1, fullRect.xMax + 10, 1); var titleRect = new Rect(fullRect.position.x - 1, fullRect.position.y, fullRect.width, 18); var arrowRect = new Rect(fullRect.position.x - 15, fullRect.position.y - 1, fullRect.width, 18); if (colapsable) { if (GUI.Button(arrowRect, "", GUIStyle.none)) { enabled = !enabled; } } else { enabled = true; } EditorGUI.DrawRect(fillRect, Constant.CategoryColor); EditorGUI.DrawRect(lineRect, Constant.LineColor); bannerText = FormatBannerText(bannerText); message = BoxoUtils.FormatMessage(message); var bannerContext = new GUIContent(bannerText, message); GUI.Label(titleRect, bannerContext, Constant.HeaderStyle); GUI.color = new Color(1, 1, 1, 0.39f); if (colapsable) { if (enabled) { GUI.Label(arrowRect, "▼", Constant.HeaderStyle); GUILayout.Space(down); } else { GUI.Label(arrowRect, "►", Constant.HeaderStyle); GUILayout.Space(0); } } else { GUILayout.Space(down); } GUI.color = Color.white; return enabled; } public static bool DrawInspectorCategory(string bannerText, bool enabled, bool colapsable, string dotColor, string message, float top, float down) { GUI.contentColor = Color.white; GUI.color = new Color(1, 1, 1, 0.9f); if (colapsable) { if (enabled) { GUILayout.Space(top); } else { GUILayout.Space(0); } } else { GUILayout.Space(top); } var fullRect = GUILayoutUtility.GetRect(0, 0, 18, 0); var fillRect = new Rect(0, fullRect.y, fullRect.xMax + 10, 18); var lineRect = new Rect(0, fullRect.y - 1, fullRect.xMax + 10, 1); var titleRect = new Rect(fullRect.position.x - 1, fullRect.position.y, fullRect.width, 18); var arrowRect = new Rect(fullRect.position.x - 15, fullRect.position.y - 1, fullRect.width, 18); var dotRect = new Rect(fullRect.xMax - 18, fullRect.y - 1, 18, 18); if (colapsable) { if (GUI.Button(arrowRect, "", GUIStyle.none)) { enabled = !enabled; } } else { enabled = true; } EditorGUI.DrawRect(fillRect, Constant.CategoryColor); EditorGUI.DrawRect(lineRect, Constant.LineColor); bannerText = FormatBannerText(bannerText); message = BoxoUtils.FormatMessage(message); var bannerContext = new GUIContent(bannerText, message); GUI.Label(titleRect, bannerContext, Constant.HeaderStyle); GUI.color = new Color(1, 1, 1, 0.39f); if (colapsable) { if (enabled) { GUI.Label(arrowRect, "▼", Constant.HeaderStyle); GUILayout.Space(down); } else { GUI.Label(arrowRect, "►", Constant.HeaderStyle); GUILayout.Space(0); } } else { GUILayout.Space(down); } GUI.color = Color.white; if (dotColor != "NONE") { string subtitle; if (EditorGUIUtility.isProSkin) { subtitle = "●"; } else { subtitle = "●"; } GUI.Label(dotRect, "" + subtitle + "", Constant.TitleStyle); } return enabled; } static string FormatBannerText(string bannerText) { if (bannerText.Contains("_")) { var splitBanner = bannerText.Split("_"); bannerText = splitBanner[0] + " (" + splitBanner[1] + ")"; } return bannerText; } } }