diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
| commit | c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch) | |
| tree | ee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs | |
| download | Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2 Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip | |
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/Manipulators/Utils/EditModeReplaceUtils.cs | 57 |
1 files changed, 57 insertions, 0 deletions
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<ItemsPerTrack> itemsGroups) + { + foreach (var itemsGroup in itemsGroups) + { + Insert(itemsGroup.targetTrack, itemsGroup.items); + } + } + + static void Insert(TrackAsset track, IEnumerable<ITimelineItem> items) + { + if (track == null) return; + var orderedItems = ItemsUtils.GetItemsExcept(track, items) + .OfType<ITrimmable>() + .OrderBy(i => i.start).ToArray(); + + foreach (var item in items.OfType<ITrimmable>()) + { + 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<from && c.end> 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); + } + } + } + } +} |
