Singularity/Library/PackageCache/com.unity.textmeshpro@3.0.8/Scripts/Editor/TMP_MeshRendererEditor.cs

77 lines
2.8 KiB
C#
Raw Normal View History

2024-05-06 14:45:45 -04:00
// 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
#if ALLOW_MESHRENDERER_MATERIAL_DRAG_N_DROP
[CanEditMultipleObjects]
[CustomEditor(typeof(MeshRenderer))]
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);
}
}
}
}
#endif
}