diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
| commit | c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch) | |
| tree | ee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs | |
| download | Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2 Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip | |
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs new file mode 100644 index 0000000..cd96573 --- /dev/null +++ b/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Editor/TMP_TextAlignmentDrawer.cs @@ -0,0 +1,119 @@ +using UnityEngine;
+using UnityEditor;
+
+namespace TMPro.EditorUtilities
+{
+
+ [CustomPropertyDrawer(typeof(TextAlignmentOptions))]
+ public class TMP_TextAlignmentDrawer : PropertyDrawer
+ {
+ const int k_AlignmentButtonWidth = 24;
+ const int k_AlignmentButtonHeight = 20;
+ const int k_WideViewWidth = 504;
+ const int k_ControlsSpacing = 6;
+ const int k_GroupWidth = k_AlignmentButtonWidth * 6;
+ static readonly int k_TextAlignmentHash = "DoTextAligmentControl".GetHashCode();
+
+ public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
+ {
+ return EditorGUIUtility.currentViewWidth > k_WideViewWidth ? k_AlignmentButtonHeight : k_AlignmentButtonHeight * 2 + 3;
+ }
+
+ public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+ {
+ var id = GUIUtility.GetControlID(k_TextAlignmentHash, FocusType.Keyboard, position);
+
+ EditorGUI.BeginProperty(position, label, property);
+ {
+ var controlArea = EditorGUI.PrefixLabel(position, id, label);
+
+ var horizontalAligment = new Rect(controlArea.x, controlArea.y, k_GroupWidth, k_AlignmentButtonHeight);
+ var verticalAligment = new Rect(!(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.x : horizontalAligment.xMax + k_ControlsSpacing, !(EditorGUIUtility.currentViewWidth > k_WideViewWidth) ? controlArea.y + k_AlignmentButtonHeight + 3 : controlArea.y, k_GroupWidth, k_AlignmentButtonHeight);
+
+ EditorGUI.BeginChangeCheck();
+
+ var selectedHorizontal = DoHorizontalAligmentControl(horizontalAligment, property);
+ var selectedVertical = DoVerticalAligmentControl(verticalAligment, property);
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ var value = (0x1 << selectedHorizontal) | (0x100 << selectedVertical);
+ property.intValue = value;
+ }
+ }
+ EditorGUI.EndProperty();
+ }
+
+ static int DoHorizontalAligmentControl(Rect position, SerializedProperty alignment)
+ {
+ var selected = TMP_EditorUtility.GetHorizontalAlignmentGridValue(alignment.intValue);
+
+ var values = new bool[6];
+
+ values[selected] = true;
+
+ if (alignment.hasMultipleDifferentValues)
+ {
+ foreach (var obj in alignment.serializedObject.targetObjects)
+ {
+ var text = obj as TMP_Text;
+ if (text != null)
+ {
+ values[TMP_EditorUtility.GetHorizontalAlignmentGridValue((int)text.alignment)] = true;
+ }
+ }
+ }
+
+ position.width = k_AlignmentButtonWidth;
+
+ for (var i = 0; i < values.Length; i++)
+ {
+ var oldValue = values[i];
+ var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentA[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid));
+ if (newValue != oldValue)
+ {
+ selected = i;
+ }
+ position.x += position.width;
+ }
+
+ return selected;
+ }
+
+ static int DoVerticalAligmentControl(Rect position, SerializedProperty alignment)
+ {
+ var selected = TMP_EditorUtility.GetVerticalAlignmentGridValue(alignment.intValue);
+
+ var values = new bool[6];
+
+ values[selected] = true;
+
+ if (alignment.hasMultipleDifferentValues)
+ {
+ foreach (var obj in alignment.serializedObject.targetObjects)
+ {
+ var text = obj as TMP_Text;
+ if (text != null)
+ {
+ values[TMP_EditorUtility.GetVerticalAlignmentGridValue((int)text.alignment)] = true;
+ }
+ }
+ }
+
+ position.width = k_AlignmentButtonWidth;
+
+ for (var i = 0; i < values.Length; i++)
+ {
+ var oldValue = values[i];
+ var newValue = TMP_EditorUtility.EditorToggle(position, oldValue, TMP_UIStyleManager.alignContentB[i], i == 0 ? TMP_UIStyleManager.alignmentButtonLeft : (i == 5 ? TMP_UIStyleManager.alignmentButtonRight : TMP_UIStyleManager.alignmentButtonMid));
+ if (newValue != oldValue)
+ {
+ selected = i;
+ }
+ position.x += position.width;
+ }
+
+ return selected;
+ }
+ }
+}
|
