75 lines
2.5 KiB
C#
75 lines
2.5 KiB
C#
using UnityEngine;
|
|
using UnityEditor.AnimatedValues;
|
|
using UnityEngine.UI;
|
|
|
|
namespace UnityEditor.UI
|
|
{
|
|
[CustomEditor(typeof(AspectRatioFitter), true)]
|
|
[CanEditMultipleObjects]
|
|
/// <summary>
|
|
/// Custom Editor for the AspectRatioFitter component.
|
|
/// Extend this class to write a custom editor for a component derived from AspectRatioFitter.
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|
|
}
|