123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #if UNITY_EDITOR
- using System.IO;
- using UnityEditor;
-
- namespace UnityEngine.InputSystem.Editor
- {
- internal static class GUIHelpers
- {
- public static class Styles
- {
- public static readonly GUIStyle lineSeparator = new GUIStyle().WithFixedHeight(1).WithMargin(new RectOffset(0, 0, 2, 2));
- }
-
- private const string kIconPath = "Packages/com.unity.inputsystem/InputSystem/Editor/Icons/";
-
- public static void DrawLineSeparator(string label = null)
- {
- var hasLabel = !string.IsNullOrEmpty(label);
- EditorGUILayout.BeginVertical();
- var rect = GUILayoutUtility.GetRect(GUIContent.none, Styles.lineSeparator, GUILayout.ExpandWidth(true));
- var labelRect = new Rect();
- GUIContent labelContent = null;
- if (hasLabel)
- {
- labelContent = new GUIContent(label);
- labelRect = GUILayoutUtility.GetRect(labelContent, EditorStyles.miniLabel, GUILayout.ExpandWidth(true));
- }
- EditorGUILayout.EndVertical();
-
- if (Event.current.type != EventType.Repaint)
- return;
-
- var orgColor = GUI.color;
- var tintColor = EditorGUIUtility.isProSkin ? new Color(0.12f, 0.12f, 0.12f, 1.333f) : new Color(0.6f, 0.6f, 0.6f, 1.333f);
- GUI.color = GUI.color * tintColor;
- GUI.DrawTexture(rect, EditorGUIUtility.whiteTexture);
- GUI.color = orgColor;
-
- if (hasLabel)
- EditorGUI.LabelField(labelRect, labelContent, EditorStyles.miniLabel);
- }
-
- public static Texture2D LoadIcon(string name)
- {
- var skinPrefix = EditorGUIUtility.isProSkin ? "d_" : "";
- var scale = Mathf.Clamp((int)EditorGUIUtility.pixelsPerPoint, 0, 4);
- var scalePostFix = scale > 1 ? $"@{scale}x" : "";
- if (name.IndexOfAny(Path.GetInvalidFileNameChars()) > -1)
- name = string.Join("_", name.Split(Path.GetInvalidFileNameChars()));
- var path = Path.Combine(kIconPath, skinPrefix + name + scalePostFix + ".png");
- return AssetDatabase.LoadAssetAtPath<Texture2D>(path);
- }
-
- public static GUIStyle WithNormalBackground(this GUIStyle style, Texture2D background)
- {
- style.normal.background = background;
- return style;
- }
-
- public static GUIStyle WithFontSize(this GUIStyle style, int fontSize)
- {
- style.fontSize = fontSize;
- return style;
- }
-
- public static GUIStyle WithFontStyle(this GUIStyle style, FontStyle fontStyle)
- {
- style.fontStyle = fontStyle;
- return style;
- }
-
- public static GUIStyle WithAlignment(this GUIStyle style, TextAnchor alignment)
- {
- style.alignment = alignment;
- return style;
- }
-
- public static GUIStyle WithMargin(this GUIStyle style, RectOffset margin)
- {
- style.margin = margin;
- return style;
- }
-
- public static GUIStyle WithBorder(this GUIStyle style, RectOffset border)
- {
- style.border = border;
- return style;
- }
-
- public static GUIStyle WithPadding(this GUIStyle style, RectOffset padding)
- {
- style.padding = padding;
- return style;
- }
-
- public static GUIStyle WithFixedWidth(this GUIStyle style, int fixedWidth)
- {
- style.fixedWidth = fixedWidth;
- return style;
- }
-
- public static GUIStyle WithFixedHeight(this GUIStyle style, int fixedHeight)
- {
- style.fixedHeight = fixedHeight;
- return style;
- }
-
- public static GUIStyle WithRichText(this GUIStyle style, bool richText = true)
- {
- style.richText = richText;
- return style;
- }
-
- public static GUIStyle WithFont(this GUIStyle style, Font font)
- {
- style.font = font;
- return style;
- }
-
- public static GUIStyle WithContentOffset(this GUIStyle style, Vector2 contentOffset)
- {
- style.contentOffset = contentOffset;
- return style;
- }
-
- public static GUIStyle WithNormalTextColor(this GUIStyle style, Color textColor)
- {
- style.normal.textColor = textColor;
- return style;
- }
- }
- }
- #endif // UNITY_EDITOR
|