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