12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System;
- using UnityEngine;
- using UnityEngine.Timeline;
- using UnityEngine.Playables;
- namespace UnityEngine.Timeline
- {
-
-
-
- public static class TrackAssetExtensions
- {
-
-
-
-
-
- public static GroupTrack GetGroup(this TrackAsset asset)
- {
- if (asset == null)
- return null;
- return asset.parent as GroupTrack;
- }
-
-
-
-
-
-
-
-
- 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);
- }
- }
- }
- }
|