using UnityEngine; using UnityEditor; using System.Collections; namespace TMPro.EditorUtilities { [CustomEditor(typeof(TMP_SubMesh)), CanEditMultipleObjects] public class TMP_SubMesh_Editor : Editor { private struct m_foldout { // Track Inspector foldout panel states, globally. //public static bool textInput = true; public static bool fontSettings = true; //public static bool extraSettings = false; //public static bool shadowSetting = false; //public static bool materialEditor = true; } private SerializedProperty fontAsset_prop; private SerializedProperty spriteAsset_prop; private TMP_SubMesh m_SubMeshComponent; private Renderer m_Renderer; public void OnEnable() { fontAsset_prop = serializedObject.FindProperty("m_fontAsset"); spriteAsset_prop = serializedObject.FindProperty("m_spriteAsset"); m_SubMeshComponent = target as TMP_SubMesh; m_Renderer = m_SubMeshComponent.renderer; } public override void OnInspectorGUI() { EditorGUI.indentLevel = 0; GUI.enabled = false; EditorGUILayout.PropertyField(fontAsset_prop); EditorGUILayout.PropertyField(spriteAsset_prop); GUI.enabled = true; EditorGUI.BeginChangeCheck(); // SORTING LAYERS var sortingLayerNames = SortingLayerHelper.sortingLayerNames; // Look up the layer name using the current layer ID string oldName = SortingLayerHelper.GetSortingLayerNameFromID(m_Renderer.sortingLayerID); // Use the name to look up our array index into the names list int oldLayerIndex = System.Array.IndexOf(sortingLayerNames, oldName); // Show the pop-up for the names int newLayerIndex = EditorGUILayout.Popup("Sorting Layer", oldLayerIndex, sortingLayerNames); // If the index changes, look up the ID for the new index to store as the new ID if (newLayerIndex != oldLayerIndex) { //Undo.RecordObject(renderer, "Edit Sorting Layer"); m_Renderer.sortingLayerID = SortingLayerHelper.GetSortingLayerIDForIndex(newLayerIndex); //EditorUtility.SetDirty(renderer); } // Expose the manual sorting order int newSortingLayerOrder = EditorGUILayout.IntField("Order in Layer", m_Renderer.sortingOrder); if (newSortingLayerOrder != m_Renderer.sortingOrder) { //Undo.RecordObject(renderer, "Edit Sorting Order"); m_Renderer.sortingOrder = newSortingLayerOrder; } } } }