diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-08-20 23:40:50 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-08-20 23:40:50 -0400 |
| commit | 3af4c218c0e70167db23a6303d2af30aff37d2fe (patch) | |
| tree | 927f29edcf54ab562f40f3d1c6cb69287c7f5980 /Library/PackageCache/com.unity.timeline@1.2.13/Editor/CustomEditors/CustomTimelineEditorCache.cs | |
| parent | b6daed0af784f4e9bc13329dd87c671b06ee1c65 (diff) | |
| download | Project-Sandbox-3af4c218c0e70167db23a6303d2af30aff37d2fe.tar.gz Project-Sandbox-3af4c218c0e70167db23a6303d2af30aff37d2fe.tar.bz2 Project-Sandbox-3af4c218c0e70167db23a6303d2af30aff37d2fe.zip | |
Removed a bunch of stuff; Changes
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/CustomEditors/CustomTimelineEditorCache.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/CustomEditors/CustomTimelineEditorCache.cs | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/CustomEditors/CustomTimelineEditorCache.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/CustomEditors/CustomTimelineEditorCache.cs deleted file mode 100644 index 8211a98..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/CustomEditors/CustomTimelineEditorCache.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; -using UnityEngine.Playables; -using UnityEngine.Timeline; - -namespace UnityEditor.Timeline -{ - class CustomTimelineEditorCache - { - static class SubClassCache<TEditorClass> where TEditorClass : class, new() - { - private static Type[] s_SubClasses = null; - private static readonly TEditorClass s_DefaultInstance = new TEditorClass(); - private static readonly Dictionary<System.Type, TEditorClass> s_TypeMap = new Dictionary<Type, TEditorClass>(); - - public static TEditorClass DefaultInstance - { - get { return s_DefaultInstance; } - } - - static Type[] SubClasses - { - get - { - // order the subclass array by built-ins then user defined so built-in classes are chosen first - return s_SubClasses ?? - (s_SubClasses = TypeCache.GetTypesDerivedFrom<TEditorClass>().OrderBy(t => t.Assembly == typeof(UnityEditor.Timeline.TimelineEditor).Assembly ? 1 : 0).ToArray()); - } - } - - public static TEditorClass GetEditorForType(Type type) - { - TEditorClass editorClass = null; - if (!s_TypeMap.TryGetValue(type, out editorClass) || editorClass == null) - { - Type editorClassType = null; - Type searchType = type; - while (searchType != null) - { - // search our way up the runtime class hierarchy so we get the best match - editorClassType = GetExactEditorClassForType(searchType); - if (editorClassType != null) - break; - searchType = searchType.BaseType; - } - - if (editorClassType == null) - { - editorClass = s_DefaultInstance; - } - else - { - try - { - editorClass = (TEditorClass)Activator.CreateInstance(editorClassType); - } - catch (Exception e) - { - Debug.LogWarningFormat("Could not create a Timeline editor class of type {0}: {1}", editorClassType, e.Message); - editorClass = s_DefaultInstance; - } - } - - s_TypeMap[type] = editorClass; - } - - return editorClass; - } - - private static Type GetExactEditorClassForType(Type type) - { - foreach (var subClass in SubClasses) - { - // first check for exact match - var attr = (CustomTimelineEditorAttribute)Attribute.GetCustomAttribute(subClass, typeof(CustomTimelineEditorAttribute), false); - if (attr != null && attr.classToEdit == type) - { - return subClass; - } - } - - return null; - } - - public static void Clear() - { - s_TypeMap.Clear(); - s_SubClasses = null; - } - } - - public static TEditorClass GetEditorForType<TEditorClass, TRuntimeClass>(Type type) where TEditorClass : class, new() - { - if (type == null) - throw new ArgumentNullException(nameof(type)); - - if (!typeof(TRuntimeClass).IsAssignableFrom(type)) - throw new ArgumentException(type.FullName + " does not inherit from" + typeof(TRuntimeClass)); - - return SubClassCache<TEditorClass>.GetEditorForType(type); - } - - public static void ClearCache<TEditorClass>() where TEditorClass : class, new() - { - SubClassCache<TEditorClass>.Clear(); - } - - public static ClipEditor GetClipEditor(TimelineClip clip) - { - if (clip == null) - throw new ArgumentNullException(nameof(clip)); - - var type = typeof(IPlayableAsset); - if (clip.asset != null) - type = clip.asset.GetType(); - - if (!typeof(IPlayableAsset).IsAssignableFrom(type)) - return GetDefaultClipEditor(); - - return GetEditorForType<ClipEditor, IPlayableAsset>(type); - } - - public static ClipEditor GetDefaultClipEditor() - { - return SubClassCache<ClipEditor>.DefaultInstance; - } - - public static TrackEditor GetTrackEditor(TrackAsset track) - { - if (track == null) - throw new ArgumentNullException(nameof(track)); - - return GetEditorForType<TrackEditor, TrackAsset>(track.GetType()); - } - - public static TrackEditor GetDefaultTrackEditor() - { - return SubClassCache<TrackEditor>.DefaultInstance; - } - - public static MarkerEditor GetMarkerEditor(IMarker marker) - { - if (marker == null) - throw new ArgumentNullException(nameof(marker)); - return GetEditorForType<MarkerEditor, IMarker>(marker.GetType()); - } - - public static MarkerEditor GetDefaultMarkerEditor() - { - return SubClassCache<MarkerEditor>.DefaultInstance; - } - } -} |
