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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
        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();
        }