| using UnityEngine; |
| using UnityEngine.UI; |
| using UnityEditor; |
|
|
| namespace TMPro.EditorUtilities |
| { |
|
|
| [CustomEditor(typeof(TextMeshProUGUI), true), CanEditMultipleObjects] |
| public class TMP_EditorPanelUI : TMP_BaseEditorPanel |
| { |
| static readonly GUIContent k_RaycastTargetLabel = new GUIContent("Raycast Target", "Whether the text blocks raycasts from the Graphic Raycaster."); |
| static readonly GUIContent k_MaskableLabel = new GUIContent("Maskable", "Determines if the text object will be affected by UI Mask."); |
|
|
| SerializedProperty m_RaycastTargetProp; |
| private SerializedProperty m_MaskableProp; |
|
|
| protected override void OnEnable() |
| { |
| base.OnEnable(); |
| m_RaycastTargetProp = serializedObject.FindProperty("m_RaycastTarget"); |
| m_MaskableProp = serializedObject.FindProperty("m_Maskable"); |
| } |
|
|
| protected override void DrawExtraSettings() |
| { |
| Rect rect = EditorGUILayout.GetControlRect(false, 24); |
|
|
| if (GUI.Button(rect, new GUIContent("<b>Extra Settings</b>"), TMP_UIStyleManager.sectionHeader)) |
| Foldout.extraSettings = !Foldout.extraSettings; |
|
|
| GUI.Label(rect, (Foldout.extraSettings ? k_UiStateLabel[0] : k_UiStateLabel[1]), TMP_UIStyleManager.rightLabel); |
| if (Foldout.extraSettings) |
| { |
| |
|
|
| DrawMargins(); |
|
|
| DrawGeometrySorting(); |
|
|
| DrawIsTextObjectScaleStatic(); |
|
|
| DrawRichText(); |
|
|
| DrawRaycastTarget(); |
|
|
| DrawMaskable(); |
|
|
| DrawParsing(); |
|
|
| DrawSpriteAsset(); |
|
|
| DrawStyleSheet(); |
|
|
| DrawKerning(); |
|
|
| DrawPadding(); |
|
|
| |
| } |
| } |
|
|
| protected void DrawRaycastTarget() |
| { |
| EditorGUI.BeginChangeCheck(); |
| EditorGUILayout.PropertyField(m_RaycastTargetProp, k_RaycastTargetLabel); |
| if (EditorGUI.EndChangeCheck()) |
| { |
| |
| Graphic[] graphicComponents = m_TextComponent.GetComponentsInChildren<Graphic>(); |
| for (int i = 1; i < graphicComponents.Length; i++) |
| graphicComponents[i].raycastTarget = m_RaycastTargetProp.boolValue; |
|
|
| m_HavePropertiesChanged = true; |
| } |
| } |
|
|
| protected void DrawMaskable() |
| { |
| if (m_MaskableProp == null) |
| return; |
|
|
| EditorGUI.BeginChangeCheck(); |
| EditorGUILayout.PropertyField(m_MaskableProp, k_MaskableLabel); |
| if (EditorGUI.EndChangeCheck()) |
| { |
| m_TextComponent.maskable = m_MaskableProp.boolValue; |
|
|
| |
| MaskableGraphic[] maskableGraphics = m_TextComponent.GetComponentsInChildren<MaskableGraphic>(); |
| for (int i = 1; i < maskableGraphics.Length; i++) |
| maskableGraphics[i].maskable = m_MaskableProp.boolValue; |
|
|
| m_HavePropertiesChanged = true; |
| } |
| } |
|
|
| |
| protected override bool IsMixSelectionTypes() |
| { |
| GameObject[] objects = Selection.gameObjects; |
| if (objects.Length > 1) |
| { |
| for (int i = 0; i < objects.Length; i++) |
| { |
| if (objects[i].GetComponent<TextMeshProUGUI>() == null) |
| return true; |
| } |
| } |
| return false; |
| } |
| protected override void OnUndoRedo() |
| { |
| int undoEventId = Undo.GetCurrentGroup(); |
| int lastUndoEventId = s_EventId; |
|
|
| if (undoEventId != lastUndoEventId) |
| { |
| for (int i = 0; i < targets.Length; i++) |
| { |
| |
| TMPro_EventManager.ON_TEXTMESHPRO_UGUI_PROPERTY_CHANGED(true, targets[i] as TextMeshProUGUI); |
| s_EventId = undoEventId; |
| } |
| } |
| } |
| } |
| } |
|
|