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/AnimationClipActions.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/AnimationClipActions.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationClipActions.cs | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationClipActions.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationClipActions.cs new file mode 100644 index 0000000..4c79048 --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationClipActions.cs @@ -0,0 +1,96 @@ +using System.ComponentModel; +using System.Linq; +using JetBrains.Annotations; +using UnityEngine; +using UnityEngine.Timeline; +using UnityEngine.Playables; +using ClipAction = UnityEditor.Timeline.ItemAction<UnityEngine.Timeline.TimelineClip>; + +namespace UnityEditor.Timeline +{ + [MenuEntry("Match Offsets To Previous Clip", MenuOrder.CustomClipAction.AnimClipMatchPrevious), UsedImplicitly] + class MatchOffsetsPreviousAction : ClipAction + { + public override bool Execute(WindowState state, TimelineClip[] items) + { + AnimationOffsetMenu.MatchClipsToPrevious(state, items.Where(x => IsValidClip(x, TimelineEditor.inspectedDirector)).ToArray()); + return true; + } + + private static bool IsValidClip(TimelineClip clip, PlayableDirector director) + { + return clip != null && + clip.parentTrack != null && + (clip.asset as AnimationPlayableAsset) != null && + clip.parentTrack.clips.Any(x => x.start < clip.start) && + TimelineUtility.GetSceneGameObject(director, clip.parentTrack) != null; + } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TimelineClip[] items) + { + if (!items.All(TimelineAnimationUtilities.IsAnimationClip)) + return MenuActionDisplayState.Hidden; + + var director = TimelineEditor.inspectedDirector; + if (TimelineEditor.inspectedDirector == null) + return MenuActionDisplayState.Hidden; + + if (items.Any(c => IsValidClip(c, director))) + return MenuActionDisplayState.Visible; + + return MenuActionDisplayState.Hidden; + } + } + + [MenuEntry("Match Offsets To Next Clip", MenuOrder.CustomClipAction.AnimClipMatchNext), UsedImplicitly] + class MatchOffsetsNextAction : ClipAction + { + public override bool Execute(WindowState state, TimelineClip[] items) + { + AnimationOffsetMenu.MatchClipsToNext(state, items.Where(x => IsValidClip(x, TimelineEditor.inspectedDirector)).ToArray()); + return true; + } + + private static bool IsValidClip(TimelineClip clip, PlayableDirector director) + { + return clip != null && + clip.parentTrack != null && + (clip.asset as AnimationPlayableAsset) != null && + clip.parentTrack.clips.Any(x => x.start > clip.start) && + TimelineUtility.GetSceneGameObject(director, clip.parentTrack) != null; + } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TimelineClip[] items) + { + if (!items.All(TimelineAnimationUtilities.IsAnimationClip)) + return MenuActionDisplayState.Hidden; + + var director = TimelineEditor.inspectedDirector; + if (TimelineEditor.inspectedDirector == null) + return MenuActionDisplayState.Hidden; + + if (items.Any(c => IsValidClip(c, director))) + return MenuActionDisplayState.Visible; + + return MenuActionDisplayState.Hidden; + } + } + + [MenuEntry("Reset Offsets", MenuOrder.CustomClipAction.AnimClipResetOffset), UsedImplicitly] + class ResetOffsets : ClipAction + { + public override bool Execute(WindowState state, TimelineClip[] items) + { + AnimationOffsetMenu.ResetClipOffsets(state, items.Where(TimelineAnimationUtilities.IsAnimationClip).ToArray()); + return true; + } + + protected override MenuActionDisplayState GetDisplayState(WindowState state, TimelineClip[] items) + { + if (!items.All(TimelineAnimationUtilities.IsAnimationClip)) + return MenuActionDisplayState.Hidden; + + return MenuActionDisplayState.Visible; + } + } +} |
