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;
|
|
}
|
|
}
|
|
}
|
|
}
|