using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections;
|
|
|
|
|
|
namespace TMPro.EditorUtilities
|
|
{
|
|
[CustomEditor(typeof(TMP_ColorGradient))]
|
|
public class TMP_ColorGradientEditor : Editor
|
|
{
|
|
SerializedProperty m_ColorMode;
|
|
SerializedProperty m_TopLeftColor;
|
|
SerializedProperty m_TopRightColor;
|
|
SerializedProperty m_BottomLeftColor;
|
|
SerializedProperty m_BottomRightColor;
|
|
|
|
void OnEnable()
|
|
{
|
|
m_ColorMode = serializedObject.FindProperty("colorMode");
|
|
m_TopLeftColor = serializedObject.FindProperty("topLeft");
|
|
m_TopRightColor = serializedObject.FindProperty("topRight");
|
|
m_BottomLeftColor = serializedObject.FindProperty("bottomLeft");
|
|
m_BottomRightColor = serializedObject.FindProperty("bottomRight");
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
serializedObject.Update();
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUILayout.PropertyField(m_ColorMode, new GUIContent("Color Mode"));
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
switch ((ColorMode)m_ColorMode.enumValueIndex)
|
|
{
|
|
case ColorMode.Single:
|
|
m_TopRightColor.colorValue = m_TopLeftColor.colorValue;
|
|
m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue;
|
|
m_BottomRightColor.colorValue = m_TopLeftColor.colorValue;
|
|
break;
|
|
case ColorMode.HorizontalGradient:
|
|
m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue;
|
|
m_BottomRightColor.colorValue = m_TopRightColor.colorValue;
|
|
break;
|
|
case ColorMode.VerticalGradient:
|
|
m_TopRightColor.colorValue = m_TopLeftColor.colorValue;
|
|
m_BottomRightColor.colorValue = m_BottomLeftColor.colorValue;
|
|
break;
|
|
}
|
|
}
|
|
Rect rect;
|
|
switch ((ColorMode)m_ColorMode.enumValueIndex)
|
|
{
|
|
case ColorMode.Single:
|
|
EditorGUI.BeginChangeCheck();
|
|
rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2));
|
|
EditorGUI.PrefixLabel(rect, new GUIContent("Colors"));
|
|
rect.x += EditorGUIUtility.labelWidth;
|
|
rect.width = (rect.width - EditorGUIUtility.labelWidth) / (EditorGUIUtility.wideMode ? 1f : 2f);
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
m_TopRightColor.colorValue = m_TopLeftColor.colorValue;
|
|
m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue;
|
|
m_BottomRightColor.colorValue = m_TopLeftColor.colorValue;
|
|
}
|
|
break;
|
|
|
|
case ColorMode.HorizontalGradient:
|
|
rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2));
|
|
EditorGUI.PrefixLabel(rect, new GUIContent("Colors"));
|
|
rect.x += EditorGUIUtility.labelWidth;
|
|
rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f;
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
m_BottomLeftColor.colorValue = m_TopLeftColor.colorValue;
|
|
}
|
|
|
|
rect.x += rect.width;
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_TopRightColor);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
m_BottomRightColor.colorValue = m_TopRightColor.colorValue;
|
|
}
|
|
break;
|
|
|
|
case ColorMode.VerticalGradient:
|
|
rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2));
|
|
EditorGUI.PrefixLabel(rect, new GUIContent("Colors"));
|
|
rect.x += EditorGUIUtility.labelWidth;
|
|
rect.width = (rect.width - EditorGUIUtility.labelWidth) / (EditorGUIUtility.wideMode ? 1f : 2f);
|
|
rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2);
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
m_TopRightColor.colorValue = m_TopLeftColor.colorValue;
|
|
}
|
|
|
|
rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2));
|
|
rect.x += EditorGUIUtility.labelWidth;
|
|
rect.width = (rect.width - EditorGUIUtility.labelWidth) / (EditorGUIUtility.wideMode ? 1f : 2f);
|
|
rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2);
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_BottomLeftColor);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
m_BottomRightColor.colorValue = m_BottomLeftColor.colorValue;
|
|
}
|
|
break;
|
|
|
|
case ColorMode.FourCornersGradient:
|
|
rect = EditorGUILayout.GetControlRect(true, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2));
|
|
EditorGUI.PrefixLabel(rect, new GUIContent("Colors"));
|
|
rect.x += EditorGUIUtility.labelWidth;
|
|
rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f;
|
|
rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2);
|
|
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_TopLeftColor);
|
|
rect.x += rect.width;
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_TopRightColor);
|
|
|
|
rect = EditorGUILayout.GetControlRect(false, EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2));
|
|
rect.x += EditorGUIUtility.labelWidth;
|
|
rect.width = (rect.width - EditorGUIUtility.labelWidth) / 2f;
|
|
rect.height = EditorGUIUtility.singleLineHeight * (EditorGUIUtility.wideMode ? 1 : 2);
|
|
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_BottomLeftColor);
|
|
rect.x += rect.width;
|
|
TMP_EditorUtility.DrawColorProperty(rect, m_BottomRightColor);
|
|
break;
|
|
}
|
|
|
|
if (serializedObject.ApplyModifiedProperties())
|
|
TMPro_EventManager.ON_COLOR_GRAIDENT_PROPERTY_CHANGED(target as TMP_ColorGradient);
|
|
|
|
}
|
|
}
|
|
}
|