46 lines
1.2 KiB
C#
46 lines
1.2 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Playables;
|
|
using UnityEngine.Timeline;
|
|
|
|
namespace UnityEditor.Timeline
|
|
{
|
|
internal static class IPlayableLookupExtensions
|
|
{
|
|
public static bool GetPlayableFromAnimClip(this IPlayableLookup lookup, AnimationClip clip, out Playable p)
|
|
{
|
|
if (clip == null)
|
|
{
|
|
p = Playable.Null;
|
|
return false;
|
|
}
|
|
|
|
var dict = lookup.animationClipToPlayable;
|
|
if (dict.TryGetValue(clip, out p))
|
|
{
|
|
if (p.IsValid())
|
|
return true;
|
|
|
|
// we want to remove invalid playables so they don't accumulate over time
|
|
dict.Remove(clip);
|
|
}
|
|
|
|
p = Playable.Null;
|
|
return false;
|
|
}
|
|
|
|
public static TimelineClip GetTimelineClipFromCurves(this IPlayableLookup lookup, AnimationClip clip)
|
|
{
|
|
if (clip == null)
|
|
return null;
|
|
|
|
lookup.animationClipToTimelineClip.TryGetValue(clip, out var timelineClip);
|
|
return timelineClip;
|
|
}
|
|
|
|
public static void ClearPlayableLookup(this IPlayableLookup lookup)
|
|
{
|
|
lookup.animationClipToPlayable.Clear();
|
|
}
|
|
}
|
|
}
|