From c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 19 Apr 2020 17:19:32 -0400 Subject: Inital commit --- .../Manipulators/Utils/EditModeReplaceUtils.cs | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs') diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs new file mode 100644 index 0000000..d004a5a --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; +using System.Linq; +using UnityEngine.Timeline; + +namespace UnityEditor.Timeline +{ + static class EditModeReplaceUtils + { + public static void Insert(IEnumerable itemsGroups) + { + foreach (var itemsGroup in itemsGroups) + { + Insert(itemsGroup.targetTrack, itemsGroup.items); + } + } + + static void Insert(TrackAsset track, IEnumerable items) + { + if (track == null) return; + var orderedItems = ItemsUtils.GetItemsExcept(track, items) + .OfType() + .OrderBy(i => i.start).ToArray(); + + foreach (var item in items.OfType()) + { + var from = item.start; + var to = item.end; + + var overlappedItems = orderedItems.Where(i => EditModeUtils.Overlaps(i, from, to)); + + foreach (var overlappedItem in overlappedItems) + { + if (EditModeUtils.IsItemWithinRange(overlappedItem, from, to)) + { + overlappedItem.Delete(); + } + else + { + if (overlappedItem.start >= from) + overlappedItem.TrimStart(to); + else + overlappedItem.TrimEnd(from); + } + } + + var includingItems = orderedItems.Where(c => c.start to); + foreach (var includingItem in includingItems) + { + var newItem = includingItem.CloneTo(track, includingItem.start) as ITrimmable; + includingItem.TrimStart(to); + if (newItem != null) + newItem.SetEnd(from, false); + } + } + } + } +} -- cgit v1.2.3