| using UnityEngine; |
| using UnityEditor.AnimatedValues; |
| using UnityEngine.UI; |
|
|
| namespace UnityEditor.UI |
| { |
| [CustomEditor(typeof(AspectRatioFitter), true)] |
| [CanEditMultipleObjects] |
| |
| |
| |
| |
| public class AspectRatioFitterEditor : SelfControllerEditor |
| { |
| SerializedProperty m_AspectMode; |
| SerializedProperty m_AspectRatio; |
|
|
|
|
| AnimBool m_ModeBool; |
| private AspectRatioFitter aspectRatioFitter; |
|
|
| protected virtual void OnEnable() |
| { |
| m_AspectMode = serializedObject.FindProperty("m_AspectMode"); |
| m_AspectRatio = serializedObject.FindProperty("m_AspectRatio"); |
| aspectRatioFitter = target as AspectRatioFitter; |
|
|
| m_ModeBool = new AnimBool(m_AspectMode.intValue != 0); |
| m_ModeBool.valueChanged.AddListener(Repaint); |
| } |
|
|
| public override void OnInspectorGUI() |
| { |
| serializedObject.Update(); |
| EditorGUILayout.PropertyField(m_AspectMode); |
|
|
| m_ModeBool.target = m_AspectMode.intValue != 0; |
|
|
| if (EditorGUILayout.BeginFadeGroup(m_ModeBool.faded)) |
| EditorGUILayout.PropertyField(m_AspectRatio); |
| EditorGUILayout.EndFadeGroup(); |
|
|
| serializedObject.ApplyModifiedProperties(); |
|
|
| if (aspectRatioFitter) |
| { |
| if (!aspectRatioFitter.IsAspectModeValid()) |
| ShowNoParentWarning(); |
| if (!aspectRatioFitter.IsComponentValidOnObject()) |
| ShowCanvasRenderModeInvalidWarning(); |
| } |
|
|
| base.OnInspectorGUI(); |
| } |
|
|
| protected virtual void OnDisable() |
| { |
| aspectRatioFitter = null; |
| m_ModeBool.valueChanged.RemoveListener(Repaint); |
| } |
|
|
| private static void ShowNoParentWarning() |
| { |
| var text = L10n.Tr("You cannot use this Aspect Mode because this Component's GameObject does not have a parent object."); |
| EditorGUILayout.HelpBox(text, MessageType.Warning, true); |
| } |
|
|
| private static void ShowCanvasRenderModeInvalidWarning() |
| { |
| var text = L10n.Tr("You cannot use this Aspect Mode because this Component is attached to a Canvas with a fixed width and height."); |
| EditorGUILayout.HelpBox(text, MessageType.Warning, true); |
| } |
| } |
| } |
|
|