123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- #if UNITY_EDITOR
- #pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
- using Animancer.Units;
- using System.Collections.Generic;
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- namespace Animancer.Editor
- {
-
-
-
-
-
-
-
-
-
-
-
-
-
- [HelpURL(Strings.DocsURLs.APIDocumentation + "." + nameof(Editor) + "/" + nameof(AnimancerSettings))]
- public class AnimancerSettings : ScriptableObject
- {
-
- private static AnimancerSettings _Instance;
-
-
-
-
- public static AnimancerSettings Instance
- {
- get
- {
- if (_Instance != null)
- return _Instance;
- _Instance = AnimancerEditorUtilities.FindAssetOfType<AnimancerSettings>();
- if (_Instance != null)
- return _Instance;
- _Instance = CreateInstance<AnimancerSettings>();
- _Instance.name = "Animancer Settings";
- _Instance.hideFlags = HideFlags.DontSaveInBuild;
- var script = MonoScript.FromScriptableObject(_Instance);
- var path = AssetDatabase.GetAssetPath(script);
- path = Path.Combine(Path.GetDirectoryName(path), $"{_Instance.name}.asset");
- AssetDatabase.CreateAsset(_Instance, path);
- return _Instance;
- }
- }
-
- private SerializedObject _SerializedObject;
-
- public static SerializedObject SerializedObject
- => Instance._SerializedObject ?? (Instance._SerializedObject = new SerializedObject(Instance));
-
- private readonly Dictionary<string, SerializedProperty>
- SerializedProperties = new Dictionary<string, SerializedProperty>();
- private static SerializedProperty GetSerializedProperty(string propertyPath)
- {
- var properties = Instance.SerializedProperties;
- if (!properties.TryGetValue(propertyPath, out var property))
- {
- property = SerializedObject.FindProperty(propertyPath);
- properties.Add(propertyPath, property);
- }
- return property;
- }
-
-
- public abstract class Group
- {
-
- private string _BasePropertyPath;
-
- internal void SetBasePropertyPath(string propertyPath)
- {
- _BasePropertyPath = propertyPath + ".";
- }
-
-
- protected SerializedProperty GetSerializedProperty(string propertyPath)
- => AnimancerSettings.GetSerializedProperty(_BasePropertyPath + propertyPath);
-
-
-
-
-
- protected SerializedProperty DoPropertyField(string propertyPath)
- {
- var property = GetSerializedProperty(propertyPath);
- EditorGUILayout.PropertyField(property, true);
- return property;
- }
-
- }
-
-
- protected virtual void OnEnable()
- {
- if (_TransitionPreviewWindow == null)
- _TransitionPreviewWindow = new TransitionPreviewWindow.Settings();
- _TransitionPreviewWindow.SetBasePropertyPath(nameof(_TransitionPreviewWindow));
- }
-
-
- public static new void SetDirty() => EditorUtility.SetDirty(_Instance);
-
- [SerializeField]
- private TransitionPreviewWindow.Settings _TransitionPreviewWindow;
-
- internal static TransitionPreviewWindow.Settings TransitionPreviewWindow => Instance._TransitionPreviewWindow;
-
- [SerializeField]
- private AnimationTimeAttribute.Settings _AnimationTimeFields;
-
- public static AnimationTimeAttribute.Settings AnimationTimeFields => Instance._AnimationTimeFields;
-
- [SerializeField, Range(0.01f, 1)]
- [Tooltip("The amount of time between repaint commands when 'Display Options/Repaint Constantly' is disabled")]
- private float _InspectorRepaintInterval = 0.25f;
-
-
-
-
- public static float InspectorRepaintInterval => Instance._InspectorRepaintInterval;
-
- [SerializeField]
- [Tooltip("The frame rate to use for new animations")]
- private float _NewAnimationFrameRate = 12;
-
- public static SerializedProperty NewAnimationFrameRate => GetSerializedProperty(nameof(_NewAnimationFrameRate));
-
-
- [CustomEditor(typeof(AnimancerSettings), true), CanEditMultipleObjects]
- public class Editor : UnityEditor.Editor
- {
-
-
- public override void OnInspectorGUI()
- {
- base.OnInspectorGUI();
- EditorGUILayout.BeginHorizontal();
- using (ObjectPool.Disposable.AcquireContent(out var label, "Disabled Warnings"))
- {
- EditorGUI.BeginChangeCheck();
- var value = EditorGUILayout.EnumFlagsField(label, Validate.PermanentlyDisabledWarnings);
- if (EditorGUI.EndChangeCheck())
- Validate.PermanentlyDisabledWarnings = (OptionalWarning)value;
- }
- if (GUILayout.Button("Help", EditorStyles.miniButton, AnimancerGUI.DontExpandWidth))
- Application.OpenURL(Strings.DocsURLs.OptionalWarning);
- EditorGUILayout.EndHorizontal();
- }
-
- }
-
- }
- }
- #endif
|