123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- 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)
- {
- //EditorGUI.indentLevel += 1;
- DrawMargins();
- DrawGeometrySorting();
- DrawIsTextObjectScaleStatic();
- DrawRichText();
- DrawRaycastTarget();
- DrawMaskable();
- DrawParsing();
- DrawSpriteAsset();
- DrawStyleSheet();
- DrawKerning();
- DrawPadding();
- //EditorGUI.indentLevel -= 1;
- }
- }
- protected void DrawRaycastTarget()
- {
- EditorGUI.BeginChangeCheck();
- EditorGUILayout.PropertyField(m_RaycastTargetProp, k_RaycastTargetLabel);
- if (EditorGUI.EndChangeCheck())
- {
- // Change needs to propagate to the child sub objects.
- 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()
- {
- EditorGUI.BeginChangeCheck();
- EditorGUILayout.PropertyField(m_MaskableProp, k_MaskableLabel);
- if (EditorGUI.EndChangeCheck())
- {
- m_TextComponent.maskable = m_MaskableProp.boolValue;
- // Change needs to propagate to the child sub objects.
- MaskableGraphic[] maskableGraphics = m_TextComponent.GetComponentsInChildren<MaskableGraphic>();
- for (int i = 1; i < maskableGraphics.Length; i++)
- maskableGraphics[i].maskable = m_MaskableProp.boolValue;
- m_HavePropertiesChanged = true;
- }
- }
- // Method to handle multi object selection
- 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++)
- {
- //Debug.Log("Undo & Redo Performed detected in Editor Panel. Event ID:" + Undo.GetCurrentGroup());
- TMPro_EventManager.ON_TEXTMESHPRO_UGUI_PROPERTY_CHANGED(true, targets[i] as TextMeshProUGUI);
- s_EventId = undoEventId;
- }
- }
- }
- }
- }
|