using System;
using UnityEngine;
namespace UnityEditor.Tilemaps
{
///
/// Editor for GridPalette
///
[CustomEditor(typeof(GridPalette))]
public class GridPaletteEditor : Editor
{
private static class Styles
{
public static readonly GUIContent cellSizingLabel = EditorGUIUtility.TrTextContent("Cell Sizing", "Determines the sizing of cells based on Tiles in the Palette");
public static readonly GUIContent transparencySortModeLabel = EditorGUIUtility.TrTextContent("Sort Mode", "Determines the transparency sorting mode of renderers in the Palette");
public static readonly GUIContent transparencySortAxisLabel = EditorGUIUtility.TrTextContent("Sort Axis", "Determines the sorting axis if the transparency sort mode is set to Custom Axis Sort");
}
private SerializedProperty m_CellSizing;
private SerializedProperty m_TransparencySortMode;
private SerializedProperty m_TransparencySortAxis;
private int m_CustomAxisIndex;
private void OnEnable()
{
m_CellSizing = serializedObject.FindProperty("cellSizing");
m_TransparencySortMode = serializedObject.FindProperty("m_TransparencySortMode");
m_TransparencySortAxis = serializedObject.FindProperty("m_TransparencySortAxis");
m_CustomAxisIndex = Array.IndexOf(Enum.GetValues(typeof(TransparencySortMode)), TransparencySortMode.CustomAxis);
}
///
/// Draws the Inspector GUI for a GridPalette
///
public override void OnInspectorGUI()
{
m_SerializedObject.Update();
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(m_CellSizing, Styles.cellSizingLabel);
EditorGUILayout.PropertyField(m_TransparencySortMode, Styles.transparencySortModeLabel);
using (new EditorGUI.DisabledScope(m_TransparencySortMode.enumValueIndex != m_CustomAxisIndex))
{
EditorGUILayout.PropertyField(m_TransparencySortAxis, Styles.transparencySortAxisLabel);
}
if (EditorGUI.EndChangeCheck())
{
m_SerializedObject.ApplyModifiedProperties();
if (AssetDatabase.GetAssetPath(GridPaintingState.palette) == AssetDatabase.GetAssetPath(target))
{
GridPaintingState.UpdateActiveGridPalette();
GridPaintingState.RepaintGridPaintPaletteWindow();
}
}
}
}
}