summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationClipActions.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/Editor/Animation/AnimationClipActions.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/Editor/Animation/AnimationClipActions.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationClipActions.cs96
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;
+ }
+ }
+}