public static void SelectClipsInSpanInTrack(TrackAsset track, double start, double end) { var selectionManager = TimelineBase.selectionManager; var clear = selectionManager.GetMethod("Clear"); var add = selectionManager.GetMethod("Add", new Type[] { typeof(TimelineClip) }); clear.Invoke(null, null); foreach (var clip in ClipUtils.GetClipsInSpanInTrack(track, start, end)) { add.Invoke(null, new object[] { clip }); } TimelineWindowUtils.Repaint(); }
public static void SelectClipsFromCursor(ClipSelection selection) { var director = TimelineEditor.inspectedDirector; var asset = TimelineEditor.inspectedAsset; double time = TimelineWindowUtils.GetCursor(); var selectionManager = TimelineBase.selectionManager; var clear = selectionManager.GetMethod("Clear"); var add = selectionManager.GetMethod("Add", new Type[] { typeof(TimelineClip) }); clear.Invoke(null, null); foreach (var track in asset.GetRootTracks()) { if (selection == ClipSelection.Under) { foreach (var clip in ClipUtils.GetClipsAtTimeInTrack(track, time)) { add.Invoke(null, new object[] { clip }); } } else if (selection == ClipSelection.Before) { foreach (var clip in ClipUtils.GetClipsBeforeTimeInTrack(track, time)) { add.Invoke(null, new object[] { clip }); } } else if (selection == ClipSelection.After) { foreach (var clip in ClipUtils.GetClipsAfterTimeInTrack(track, time)) { add.Invoke(null, new object[] { clip }); } } } TimelineWindowUtils.Repaint(); }
public static void AlignClipsToHead(UnityEngine.Object[] objects) { Undo.RecordObjects(objects, "Align Clips to Head"); List <double> startTimeList = new List <double>(); List <TimelineClip> clipList = new List <TimelineClip>(); foreach (var obj in objects) { var selectedClip = GetClip(obj); clipList.Add(selectedClip); startTimeList.Add(selectedClip.start); } double lowest = startTimeList.Min(); foreach (var clip in clipList) { clip.start = lowest; } TimelineWindowUtils.GetWindow().Repaint(); }
public static void AlignClipsToTail(UnityEngine.Object[] objects) { Undo.RecordObjects(objects, "Align Clips to Tail"); List <double> startTimeList = new List <double>(); List <TimelineClip> clipList = new List <TimelineClip>(); foreach (var obj in objects) { var selectedClip = GetClip(obj); clipList.Add(selectedClip); startTimeList.Add(selectedClip.end); } double highest = startTimeList.Max(); foreach (var clip in clipList) { clip.start = highest - clip.duration; } TimelineWindowUtils.GetWindow().Repaint(); }
public static void SnapToNext(UnityEngine.Object[] objects) { Undo.RecordObjects(objects, "Snap To Next"); List <TimelineClip> selectedClips = new List <TimelineClip>(); for (int i = 0; i < objects.Length; i++) { var selectedClip = GetClip(objects[i]); selectedClips.Add(selectedClip); } selectedClips = selectedClips.OrderBy(c => c.start).ToList(); selectedClips.Reverse(); for (int i = 0; i < selectedClips.Count; i++) { var selectedClip = selectedClips[i]; var selectedTrack = TrackUtils.GetTrackBasedOnClip(selectedClip); var clipsInTrack = (Array)selectedTrack.GetClips(); var index = Array.IndexOf(clipsInTrack, selectedClip); // if found if (index > -1) { // and not the last clip in track if (index != clipsInTrack.Length - 1) { var nextClip = clipsInTrack.GetValue(index + 1) as TimelineClip; selectedClip.start = nextClip.start - selectedClip.duration; } } else { UnityEngine.Debug.LogWarning("Clip not found"); } } TimelineWindowUtils.GetWindow().Repaint(); }