| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //#if UNITY_EDITOR && UNITY_IMGUIusing UnityEditor;using UnityEngine;using Object = UnityEngine.Object;namespace Animancer.FSM{    /// <summary>[Editor-Only] Utilities used by the <see cref="FSM"/> system.</summary>    /// <remarks>    /// <strong>Documentation:</strong>    /// <see href="https://kybernetik.com.au/animancer/docs/manual/fsm">    /// Finite State Machines</see>    /// </remarks>    /// https://kybernetik.com.au/animancer/api/Animancer.FSM/StateMachineUtilities    ///     public static class StateMachineUtilities    {        /************************************************************************************************************************/        /// <summary>Draws a GUI field for the `value`.</summary>        public static T DoGenericField<T>(Rect area, string label, T value)        {            if (typeof(Object).IsAssignableFrom(typeof(T)))            {                return (T)(object)EditorGUI.ObjectField(                    area,                    label,                    value as Object,                    typeof(T),                    true);            }            var stateName = value != null ? value.ToString() : "Null";            EditorGUI.LabelField(area, label, stateName);            return value;        }        /************************************************************************************************************************/        /// <summary>        /// If the <see cref="Rect.height"/> is positive, this method moves the <see cref="Rect.y"/> by that amount and        /// adds the <see cref="EditorGUIUtility.standardVerticalSpacing"/>.        /// </summary>        public static void NextVerticalArea(ref Rect area)        {            if (area.height > 0)                area.y += area.height + EditorGUIUtility.standardVerticalSpacing;        }        /************************************************************************************************************************/    }}#endif
 |