12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.Playables;
- using UnityEngine.Timeline;
- namespace UnityEditor.Timeline
- {
- partial class TimelineWindow
- {
- PlayableLookup m_PlayableLookup = new PlayableLookup();
- class PlayableLookup
- {
- const int k_InitialDictionarySize = 10;
- readonly Dictionary<AnimationClip, Playable> m_AnimationClipToPlayable =
- new Dictionary<AnimationClip, Playable>(k_InitialDictionarySize);
- readonly Dictionary<AnimationClip, TimelineClip> m_AnimationClipToTimelineClip =
- new Dictionary<AnimationClip, TimelineClip>(k_InitialDictionarySize);
- public void UpdatePlayableLookup(TimelineClip clip, GameObject go, Playable p)
- {
- if (clip == null || go == null || !p.IsValid())
- return;
- if (clip.curves != null)
- m_AnimationClipToTimelineClip[clip.curves] = clip;
- UpdatePlayableLookup(clip.parentTrack.timelineAsset, clip, go, p);
- }
- public void UpdatePlayableLookup(TrackAsset track, GameObject go, Playable p)
- {
- if (track == null || go == null || !p.IsValid())
- return;
- UpdatePlayableLookup(track.timelineAsset, track, go, p);
- }
- void UpdatePlayableLookup(TimelineAsset timelineAsset, ICurvesOwner curvesOwner, GameObject go, Playable p)
- {
- var director = go.GetComponent<PlayableDirector>();
- var editingDirector = instance.state.editSequence.director;
- // No Asset mode update
- if (curvesOwner.curves != null && director != null && director == editingDirector &&
- timelineAsset == instance.state.editSequence.asset)
- {
- m_AnimationClipToPlayable[curvesOwner.curves] = p;
- }
- }
- public bool GetPlayableFromAnimClip(AnimationClip clip, out Playable p)
- {
- if (clip == null)
- {
- p = Playable.Null;
- return false;
- }
- return m_AnimationClipToPlayable.TryGetValue(clip, out p);
- }
- public TimelineClip GetTimelineClipFromCurves(AnimationClip clip)
- {
- if (clip == null)
- return null;
- TimelineClip timelineClip = null;
- m_AnimationClipToTimelineClip.TryGetValue(clip, out timelineClip);
- return timelineClip;
- }
- public void ClearPlayableLookup()
- {
- m_AnimationClipToPlayable.Clear();
- }
- }
- }
- }
|