summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs
diff options
context:
space:
mode:
authorAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
committerAndrew Lee <alee14498@protonmail.com>2020-04-19 17:19:32 -0400
commitc55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch)
treeee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs
downloadProject-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/Runtime/Extensions/TrackExtensions.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs
new file mode 100644
index 0000000..87eec1b
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Runtime/Extensions/TrackExtensions.cs
@@ -0,0 +1,76 @@
+using System;
+using UnityEngine;
+using UnityEngine.Timeline;
+using UnityEngine.Playables;
+
+namespace UnityEngine.Timeline
+{
+ /// <summary>
+ /// Extension methods for TrackAssets
+ /// </summary>
+ public static class TrackAssetExtensions
+ {
+ /// <summary>
+ /// Gets the GroupTrack this track belongs to.
+ /// </summary>
+ /// <param name="asset">The track asset to find the group of</param>
+ /// <returns>The parent GroupTrack or null if the Track is an override track, or root track.</returns>
+ public static GroupTrack GetGroup(this TrackAsset asset)
+ {
+ if (asset == null)
+ return null;
+
+ return asset.parent as GroupTrack;
+ }
+
+ /// <summary>
+ /// Assigns the track to the specified group track.
+ /// </summary>
+ /// <param name="asset">The track to assign.</param>
+ /// <param name="group">The GroupTrack to assign the track to.</param>
+ /// <remarks>
+ /// Does not support assigning to a group in a different timeline.
+ /// </remarks>
+ public static void SetGroup(this TrackAsset asset, GroupTrack group)
+ {
+ const string undoString = "Reparent";
+
+ if (asset == null || asset == group || asset.parent == group)
+ return;
+
+ if (group != null && asset.timelineAsset != group.timelineAsset)
+ throw new InvalidOperationException("Cannot assign to a group in a different timeline");
+
+
+ TimelineUndo.PushUndo(asset, undoString);
+
+ var timeline = asset.timelineAsset;
+ var parentTrack = asset.parent as TrackAsset;
+ var parentTimeline = asset.parent as TimelineAsset;
+ if (parentTrack != null || parentTimeline != null)
+ {
+ TimelineUndo.PushUndo(asset.parent, undoString);
+ if (parentTimeline != null)
+ {
+ parentTimeline.RemoveTrack(asset);
+ }
+ else
+ {
+ parentTrack.RemoveSubTrack(asset);
+ }
+ }
+
+ if (group == null)
+ {
+ TimelineUndo.PushUndo(timeline, undoString);
+ asset.parent = asset.timelineAsset;
+ timeline.AddTrackInternal(asset);
+ }
+ else
+ {
+ TimelineUndo.PushUndo(group, undoString);
+ group.AddChild(asset);
+ }
+ }
+ }
+}