Maze / Library /PackageCache /com.unity.textmeshpro@3.0.6 /Scripts /Editor /TMP_MeshRendererEditor.cs
| // When enabled, allows setting the material by dropping a material onto the MeshRenderer inspector component. | |
| // The drawback is that the MeshRenderer inspector will not have properties for light probes, so if you need light probe support, do not enable this. | |
| //#define ALLOW_MESHRENDERER_MATERIAL_DRAG_N_DROP | |
| using UnityEngine; | |
| using UnityEditor; | |
| using System.Collections; | |
| namespace TMPro.EditorUtilities | |
| { | |
| // Disabled for compatibility reason as lightprobe setup isn't supported due to inability to inherit from MeshRendererEditor class | |
| [] | |
| [] | |
| public class TMP_MeshRendererEditor : Editor | |
| { | |
| private SerializedProperty m_Materials; | |
| void OnEnable() | |
| { | |
| m_Materials = serializedObject.FindProperty("m_Materials"); | |
| } | |
| public override void OnInspectorGUI() | |
| { | |
| serializedObject.Update(); | |
| // Get a reference to the current material. | |
| SerializedProperty material_prop = m_Materials.GetArrayElementAtIndex(0); | |
| Material currentMaterial = material_prop.objectReferenceValue as Material; | |
| EditorGUI.BeginChangeCheck(); | |
| base.OnInspectorGUI(); | |
| if (EditorGUI.EndChangeCheck()) | |
| { | |
| material_prop = m_Materials.GetArrayElementAtIndex(0); | |
| TMP_FontAsset newFontAsset = null; | |
| Material newMaterial = null; | |
| if (material_prop != null) | |
| newMaterial = material_prop.objectReferenceValue as Material; | |
| // Check if the new material is referencing a different font atlas texture. | |
| if (newMaterial != null && currentMaterial.GetInstanceID() != newMaterial.GetInstanceID()) | |
| { | |
| // Search for the Font Asset matching the new font atlas texture. | |
| newFontAsset = TMP_EditorUtility.FindMatchingFontAsset(newMaterial); | |
| } | |
| GameObject[] objects = Selection.gameObjects; | |
| for (int i = 0; i < objects.Length; i++) | |
| { | |
| // Assign new font asset | |
| if (newFontAsset != null) | |
| { | |
| TMP_Text textComponent = objects[i].GetComponent<TMP_Text>(); | |
| if (textComponent != null) | |
| { | |
| Undo.RecordObject(textComponent, "Font Asset Change"); | |
| textComponent.font = newFontAsset; | |
| } | |
| } | |
| TMPro_EventManager.ON_DRAG_AND_DROP_MATERIAL_CHANGED(objects[i], currentMaterial, newMaterial); | |
| } | |
| } | |
| } | |
| } | |
| } | |