using System; using UnityEngine; namespace BestHTTP.Examples { public static class GUIHelper { private static GUIStyle centerAlignedLabel; private static GUIStyle rightAlignedLabel; public static Rect ClientArea; private static void Setup() { // These has to be called from OnGUI if (centerAlignedLabel == null) { centerAlignedLabel = new GUIStyle(GUI.skin.label); centerAlignedLabel.alignment = TextAnchor.MiddleCenter; rightAlignedLabel = new GUIStyle(GUI.skin.label); rightAlignedLabel.alignment = TextAnchor.MiddleRight; } } public static void DrawArea(Rect area, bool drawHeader, Action action) { Setup(); // Draw background GUI.Box(area, string.Empty); GUILayout.BeginArea(area); if (drawHeader) { GUIHelper.DrawCenteredText(SampleSelector.SelectedSample.DisplayName); GUILayout.Space(5); } if (action != null) action(); GUILayout.EndArea(); } public static void DrawCenteredText(string msg) { Setup(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label(msg, centerAlignedLabel); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } public static void DrawRow(string key, string value) { Setup(); GUILayout.BeginHorizontal(); GUILayout.Label(key); GUILayout.FlexibleSpace(); GUILayout.Label(value, rightAlignedLabel); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } } public class GUIMessageList { System.Collections.Generic.List messages = new System.Collections.Generic.List(); Vector2 scrollPos; public void Draw() { Draw(Screen.width, 0); } public void Draw(float minWidth, float minHeight) { scrollPos = GUILayout.BeginScrollView(scrollPos, false, false, GUILayout.MinHeight(minHeight)); for (int i = 0; i < messages.Count; ++i) GUILayout.Label(messages[i], GUILayout.MinWidth(minWidth)); GUILayout.EndScrollView(); } public void Add(string msg) { messages.Add(msg); scrollPos = new Vector2(scrollPos.x, float.MaxValue); } public void Clear() { messages.Clear(); } } }