File size: 4,491 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | #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
|