A game about forced loneliness, made by TACStudios
at master 73 lines 2.5 kB view raw
1using System.Linq; 2using UnityEngine; 3using UnityEngine.Timeline; 4 5namespace UnityEditor.Timeline 6{ 7 static class AnimationOffsetMenu 8 { 9 public static string MatchFieldsPrefix = L10n.Tr("Match Offsets Fields/"); 10 11 static bool EnforcePreviewMode() 12 { 13 TimelineEditor.state.previewMode = true; // try and set the preview mode 14 if (!TimelineEditor.state.previewMode) 15 { 16 Debug.LogError("Match clips cannot be completed because preview mode cannot be enabed"); 17 return false; 18 } 19 return true; 20 } 21 22 internal static void MatchClipsToPrevious(TimelineClip[] clips) 23 { 24 if (!EnforcePreviewMode()) 25 return; 26 27 clips = clips.OrderBy(x => x.start).ToArray(); 28 foreach (var clip in clips) 29 { 30 var sceneObject = TimelineUtility.GetSceneGameObject(TimelineEditor.inspectedDirector, clip.GetParentTrack()); 31 if (sceneObject != null) 32 { 33 TimelineAnimationUtilities.MatchPrevious(clip, sceneObject.transform, TimelineEditor.inspectedDirector); 34 } 35 } 36 37 InspectorWindow.RepaintAllInspectors(); 38 TimelineEditor.Refresh(RefreshReason.ContentsModified); 39 } 40 41 internal static void MatchClipsToNext(TimelineClip[] clips) 42 { 43 if (!EnforcePreviewMode()) 44 return; 45 46 clips = clips.OrderByDescending(x => x.start).ToArray(); 47 foreach (var clip in clips) 48 { 49 var sceneObject = TimelineUtility.GetSceneGameObject(TimelineEditor.inspectedDirector, clip.GetParentTrack()); 50 if (sceneObject != null) 51 { 52 TimelineAnimationUtilities.MatchNext(clip, sceneObject.transform, TimelineEditor.inspectedDirector); 53 } 54 } 55 56 InspectorWindow.RepaintAllInspectors(); 57 TimelineEditor.Refresh(RefreshReason.ContentsModified); 58 } 59 60 public static void ResetClipOffsets(TimelineClip[] clips) 61 { 62 foreach (var clip in clips) 63 { 64 var asset = clip.asset as AnimationPlayableAsset; 65 if (asset != null) 66 asset.ResetOffsets(); 67 } 68 69 InspectorWindow.RepaintAllInspectors(); 70 TimelineEditor.Refresh(RefreshReason.ContentsModified); 71 } 72 } 73}