// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2023 Kybernetik //
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Animancer.Editor
{
/// [Editor-Only] [Pro-Only] A custom Inspector for s
/// https://kybernetik.com.au/animancer/api/Animancer.Editor/AnimationClipEditor
///
[CustomEditor(typeof(AnimationClip))]
public class AnimationClipEditor : UnityEditor.Editor
{
/************************************************************************************************************************/
private const string DefaultEditorTypeName = nameof(UnityEditor) + "." + nameof(AnimationClipEditor);
private static readonly Type
DefaultEditorType = typeof(UnityEditor.Editor).Assembly.GetType(DefaultEditorTypeName);
/************************************************************************************************************************/
private UnityEditor.Editor _DefaultEditor;
private bool TryGetDefaultEditor(out UnityEditor.Editor editor)
{
if (_DefaultEditor == null)
{
if (DefaultEditorType == null || AnimancerEditorUtilities.IsChangingPlayMode)
{
editor = null;
return false;
}
_DefaultEditor = CreateEditor(targets, DefaultEditorType);
_DefaultEditor.hideFlags = HideFlags.DontSave;
DestroyOnPlayModeStateChanged(_DefaultEditor);
}
editor = _DefaultEditor;
return true;
}
/************************************************************************************************************************/
protected virtual void OnDestroy()
{
_DestroyOnPlayModeStateChanged?.Remove(_DefaultEditor);
DestroyImmediate(_DefaultEditor);
}
/************************************************************************************************************************/
private static HashSet