// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2026 Kybernetik //
#if UNITY_EDITOR
using Animancer.TransitionLibraries;
using UnityEditor;
using UnityEngine;
using static Animancer.Editor.AnimancerGUI;
namespace Animancer.Editor.TransitionLibraries
{
/// [Editor-Only] A custom Inspector for fields.
/// https://kybernetik.com.au/animancer/api/Animancer.Editor.TransitionLibraries/TransitionLibraryDrawer
[CustomPropertyDrawer(typeof(TransitionLibraryAsset), true)]
public class TransitionLibraryDrawer : PropertyDrawer
{
/************************************************************************************************************************/
private const string EditLabel = "Edit";
private static float _EditButtonWidth;
/************************************************************************************************************************/
///
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
=> LineHeight;
/************************************************************************************************************************/
///
public override void OnGUI(Rect area, SerializedProperty property, GUIContent label)
{
var library = property.objectReferenceValue as TransitionLibraryAsset;
if (library != null)
{
var style = EditorStyles.miniButton;
if (_EditButtonWidth <= 0)
_EditButtonWidth = style.CalculateWidth(EditLabel);
var editArea = StealFromRight(ref area, _EditButtonWidth, StandardSpacing);
if (GUI.Button(editArea, EditLabel, style))
TransitionLibraryWindow.Open(library);
}
EditorGUI.PropertyField(area, property, label);
}
/************************************************************************************************************************/
}
}
#endif