1
1
Ответвление 0
InsAsterix/InsAsterix/Library/PackageCache/com.unity.timeline@1.6.4/Editor/inspectors/EditorClipFactory.cs
2023-03-02 20:21:33 +01:00

53 строки
1,5 КиБ
C#

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Timeline;
using UnityObject = UnityEngine.Object;
namespace UnityEditor.Timeline
{
static class EditorClipFactory
{
static Dictionary<TimelineClip, EditorClip> s_EditorCache = new Dictionary<TimelineClip, EditorClip>();
public static EditorClip GetEditorClip(TimelineClip clip)
{
if (clip == null)
throw new ArgumentException("parameter cannot be null");
if (s_EditorCache.ContainsKey(clip))
{
var editorClip = s_EditorCache[clip];
if (editorClip != null)
return editorClip;
}
var editor = ScriptableObject.CreateInstance<EditorClip>();
editor.hideFlags |= HideFlags.HideInHierarchy | HideFlags.DontSaveInEditor;
editor.clip = clip;
editor.lastHash = editor.GetHashCode();
s_EditorCache[clip] = editor;
return editor;
}
public static void RemoveEditorClip(TimelineClip clip)
{
if (clip == null)
return;
if (s_EditorCache.ContainsKey(clip))
{
var obj = s_EditorCache[clip];
if (obj != null)
UnityObject.DestroyImmediate(obj);
s_EditorCache.Remove(clip);
}
}
public static bool Contains(TimelineClip clip)
{
return clip != null && s_EditorCache.ContainsKey(clip);
}
}
}