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/Animation/AnimationTrackActions.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/Animation/AnimationTrackActions.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationTrackActions.cs | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationTrackActions.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationTrackActions.cs new file mode 100644 index 0000000..0b1a171 --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationTrackActions.cs @@ -0,0 +1,151 @@ +using System.ComponentModel; +using System.Linq; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Timeline; + +namespace UnityEditor.Timeline +{ + [MenuEntry("Add Override Track", MenuOrder.CustomTrackAction.AnimAddOverrideTrack), UsedImplicitly] + class AddOverrideTrackAction : TrackAction + { + public override bool Execute(WindowState state, TrackAsset[] tracks) + { + foreach (var animTrack in tracks.OfType<AnimationTrack>()) + { + TimelineHelpers.CreateTrack(typeof(AnimationTrack), animTrack, "Override " + animTrack.GetChildTracks().Count()); + } + + return true; + } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TrackAsset[] tracks) + { + if (tracks.Any(t => t.isSubTrack || !t.GetType().IsAssignableFrom(typeof(AnimationTrack)))) + return MenuActionDisplayState.Hidden; + + if (tracks.Any(t => t.lockedInHierarchy)) + return MenuActionDisplayState.Disabled; + + return MenuActionDisplayState.Visible; + } + } + + [MenuEntry("Convert To Clip Track", MenuOrder.CustomTrackAction.AnimConvertToClipMode), UsedImplicitly] + class ConvertToClipModeAction : TrackAction + { + public override bool Execute(WindowState state, TrackAsset[] tracks) + { + foreach (var animTrack in tracks.OfType<AnimationTrack>()) + animTrack.ConvertToClipMode(); + + TimelineEditor.Refresh(RefreshReason.ContentsAddedOrRemoved); + + return true; + } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TrackAsset[] tracks) + { + if (tracks.Any(t => !t.GetType().IsAssignableFrom(typeof(AnimationTrack)))) + return MenuActionDisplayState.Hidden; + + if (tracks.Any(t => t.lockedInHierarchy)) + return MenuActionDisplayState.Disabled; + + if (tracks.OfType<AnimationTrack>().All(a => a.CanConvertToClipMode())) + return MenuActionDisplayState.Visible; + + return MenuActionDisplayState.Hidden; + } + } + + [MenuEntry("Convert To Infinite Clip", MenuOrder.CustomTrackAction.AnimConvertFromClipMode), UsedImplicitly] + class ConvertFromClipTrackAction : TrackAction + { + public override bool Execute(WindowState state, TrackAsset[] tracks) + { + foreach (var animTrack in tracks.OfType<AnimationTrack>()) + animTrack.ConvertFromClipMode(state.editSequence.asset); + + TimelineEditor.Refresh(RefreshReason.ContentsAddedOrRemoved); + + return true; + } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TrackAsset[] tracks) + { + if (tracks.Any(t => !t.GetType().IsAssignableFrom(typeof(AnimationTrack)))) + return MenuActionDisplayState.Hidden; + + if (tracks.Any(t => t.lockedInHierarchy)) + return MenuActionDisplayState.Disabled; + + if (tracks.OfType<AnimationTrack>().All(a => a.CanConvertFromClipMode())) + return MenuActionDisplayState.Visible; + + return MenuActionDisplayState.Hidden; + } + } + + abstract class TrackOffsetBaseAction : TrackAction + { + public abstract TrackOffset trackOffset { get; } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TrackAsset[] tracks) + { + if (tracks.Any(t => !t.GetType().IsAssignableFrom(typeof(AnimationTrack)))) + return MenuActionDisplayState.Hidden; + + if (tracks.Any(t => t.lockedInHierarchy)) + return MenuActionDisplayState.Disabled; + + return MenuActionDisplayState.Visible; + } + + protected override bool IsChecked(WindowState state, TrackAsset[] tracks) + { + return tracks.OfType<AnimationTrack>().All(t => t.trackOffset == trackOffset); + } + + public override bool Execute(WindowState state, TrackAsset[] tracks) + { + foreach (var animTrack in tracks.OfType<AnimationTrack>()) + { + state.UnarmForRecord(animTrack); + TimelineUndo.PushUndo(animTrack, "Set Transform Offsets"); + animTrack.trackOffset = trackOffset; + } + + TimelineEditor.Refresh(RefreshReason.ContentsModified); + return true; + } + } + + + [MenuEntry("Track Offsets/Apply Transform Offsets", MenuOrder.CustomTrackAction.AnimApplyTrackOffset), UsedImplicitly] + class ApplyTransformOffsetAction : TrackOffsetBaseAction + { + public override TrackOffset trackOffset + { + get { return TrackOffset.ApplyTransformOffsets; } + } + } + + [MenuEntry("Track Offsets/Apply Scene Offsets", MenuOrder.CustomTrackAction.AnimApplySceneOffset), UsedImplicitly] + class ApplySceneOffsetAction : TrackOffsetBaseAction + { + public override TrackOffset trackOffset + { + get { return TrackOffset.ApplySceneOffsets; } + } + } + + [MenuEntry("Track Offsets/Auto (Deprecated)", MenuOrder.CustomTrackAction.AnimApplyAutoOffset), UsedImplicitly] + class ApplyAutoAction : TrackOffsetBaseAction + { + public override TrackOffset trackOffset + { + get { return TrackOffset.Auto; } + } + } +} |
