123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- using UnityEngine;
- using UnityEditor;
- using System.Collections;
- namespace TMPro.EditorUtilities
- {
- [CustomEditor(typeof(TextContainer)), CanEditMultipleObjects]
- public class TMPro_TextContainerEditor : Editor
- {
-
-
- private SerializedProperty anchorPosition_prop;
- private SerializedProperty pivot_prop;
- private SerializedProperty rectangle_prop;
- private SerializedProperty margins_prop;
-
- private TextContainer m_textContainer;
-
-
-
-
-
-
-
-
- void OnEnable()
- {
-
-
- anchorPosition_prop = serializedObject.FindProperty("m_anchorPosition");
- pivot_prop = serializedObject.FindProperty("m_pivot");
- rectangle_prop = serializedObject.FindProperty("m_rect");
- margins_prop = serializedObject.FindProperty("m_margins");
- m_textContainer = (TextContainer)target;
-
-
-
- }
- void OnDisable()
- {
-
- }
-
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
- EditorGUI.BeginChangeCheck();
- EditorGUILayout.PropertyField(anchorPosition_prop);
- if (anchorPosition_prop.enumValueIndex == 9)
- {
- EditorGUI.indentLevel += 1;
- EditorGUILayout.PropertyField(pivot_prop, new GUIContent("Pivot Position"));
- EditorGUI.indentLevel -= 1;
- }
- DrawDimensionProperty(rectangle_prop, "Dimensions");
- DrawMaginProperty(margins_prop, "Margins");
- if (EditorGUI.EndChangeCheck())
- {
-
- if (anchorPosition_prop.enumValueIndex != 9)
- pivot_prop.vector2Value = GetAnchorPosition(anchorPosition_prop.enumValueIndex);
-
- m_textContainer.hasChanged = true;
- }
- serializedObject.ApplyModifiedProperties();
- EditorGUILayout.Space();
- }
- private void DrawDimensionProperty(SerializedProperty property, string label)
- {
- float old_LabelWidth = EditorGUIUtility.labelWidth;
- float old_FieldWidth = EditorGUIUtility.fieldWidth;
-
- Rect rect = EditorGUILayout.GetControlRect(false, 18);
- Rect pos0 = new Rect(rect.x, rect.y + 2, rect.width, 18);
- float width = rect.width + 3;
- pos0.width = old_LabelWidth;
- GUI.Label(pos0, label);
- Rect rectangle = property.rectValue;
-
- float width_B = width - old_LabelWidth;
- float fieldWidth = width_B / 4;
- pos0.width = fieldWidth - 5;
- pos0.x = old_LabelWidth + 15;
- GUI.Label(pos0, "Width");
- pos0.x += fieldWidth;
- rectangle.width = EditorGUI.FloatField(pos0, GUIContent.none, rectangle.width);
- pos0.x += fieldWidth;
- GUI.Label(pos0, "Height");
- pos0.x += fieldWidth;
- rectangle.height = EditorGUI.FloatField(pos0, GUIContent.none, rectangle.height);
- property.rectValue = rectangle;
- EditorGUIUtility.labelWidth = old_LabelWidth;
- EditorGUIUtility.fieldWidth = old_FieldWidth;
- }
- private void DrawMaginProperty(SerializedProperty property, string label)
- {
- float old_LabelWidth = EditorGUIUtility.labelWidth;
- float old_FieldWidth = EditorGUIUtility.fieldWidth;
-
- Rect rect = EditorGUILayout.GetControlRect(false, 2 * 18);
- Rect pos0 = new Rect(rect.x, rect.y + 2, rect.width, 18);
- float width = rect.width + 3;
- pos0.width = old_LabelWidth;
- GUI.Label(pos0, label);
-
- Vector4 vec = Vector4.zero;
- vec.x = property.FindPropertyRelative("x").floatValue;
- vec.y = property.FindPropertyRelative("y").floatValue;
- vec.z = property.FindPropertyRelative("z").floatValue;
- vec.w = property.FindPropertyRelative("w").floatValue;
- float widthB = width - old_LabelWidth;
- float fieldWidth = widthB / 4;
- pos0.width = fieldWidth - 5;
-
- pos0.x = old_LabelWidth + 15;
- GUI.Label(pos0, "Left");
- pos0.x += fieldWidth;
- GUI.Label(pos0, "Top");
- pos0.x += fieldWidth;
- GUI.Label(pos0, "Right");
- pos0.x += fieldWidth;
- GUI.Label(pos0, "Bottom");
- pos0.y += 18;
- pos0.x = old_LabelWidth + 15;
- vec.x = EditorGUI.FloatField(pos0, GUIContent.none, vec.x);
- pos0.x += fieldWidth;
- vec.y = EditorGUI.FloatField(pos0, GUIContent.none, vec.y);
- pos0.x += fieldWidth;
- vec.z = EditorGUI.FloatField(pos0, GUIContent.none, vec.z);
- pos0.x += fieldWidth;
- vec.w = EditorGUI.FloatField(pos0, GUIContent.none, vec.w);
-
- property.FindPropertyRelative("x").floatValue = vec.x;
- property.FindPropertyRelative("y").floatValue = vec.y;
- property.FindPropertyRelative("z").floatValue = vec.z;
- property.FindPropertyRelative("w").floatValue = vec.w;
- EditorGUIUtility.labelWidth = old_LabelWidth;
- EditorGUIUtility.fieldWidth = old_FieldWidth;
- }
- Vector2 GetAnchorPosition(int index)
- {
- Vector2 anchorPosition = Vector2.zero;
-
- switch (index)
- {
- case 0:
- anchorPosition = new Vector2(0, 1);
- break;
- case 1:
- anchorPosition = new Vector2(0.5f, 1);
- break;
- case 2:
- anchorPosition = new Vector2(1, 1);
- break;
- case 3:
- anchorPosition = new Vector2(0, 0.5f);
- break;
- case 4:
- anchorPosition = new Vector2(0.5f, 0.5f);
- break;
- case 5:
- anchorPosition = new Vector2(1, 0.5f);
- break;
- case 6:
- anchorPosition = new Vector2(0, 0);
- break;
- case 7:
- anchorPosition = new Vector2(0.5f, 0);
- break;
- case 8:
- anchorPosition = new Vector2(1, 0);
- break;
- }
-
- return anchorPosition;
- }
- }
- }
|