summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationOffsetMenu.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationOffsetMenu.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationOffsetMenu.cs82
1 files changed, 82 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationOffsetMenu.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationOffsetMenu.cs
new file mode 100644
index 0000000..dbfc688
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Animation/AnimationOffsetMenu.cs
@@ -0,0 +1,82 @@
+using System.Linq;
+using UnityEngine;
+using UnityEngine.Timeline;
+
+namespace UnityEditor.Timeline
+{
+ static class AnimationOffsetMenu
+ {
+ public static GUIContent MatchPreviousMenuItem = EditorGUIUtility.TrTextContent("Match Offsets To Previous Clip");
+ public static GUIContent MatchNextMenuItem = EditorGUIUtility.TrTextContent("Match Offsets To Next Clip");
+ public static string MatchFieldsPrefix = "Match Offsets Fields/";
+ public static GUIContent ResetOffsetMenuItem = EditorGUIUtility.TrTextContent("Reset Offsets");
+
+ static bool EnforcePreviewMode(WindowState state)
+ {
+ state.previewMode = true; // try and set the preview mode
+ if (!state.previewMode)
+ {
+ Debug.LogError("Match clips cannot be completed because preview mode cannot be enabed");
+ return false;
+ }
+ return true;
+ }
+
+ internal static void MatchClipsToPrevious(WindowState state, TimelineClip[] clips)
+ {
+ if (!EnforcePreviewMode(state))
+ return;
+
+ clips = clips.OrderBy(x => x.start).ToArray();
+ foreach (var clip in clips)
+ {
+ var sceneObject = TimelineUtility.GetSceneGameObject(state.editSequence.director, clip.parentTrack);
+ if (sceneObject != null)
+ {
+ TimelineUndo.PushUndo(clip.asset, "Match Clip");
+ TimelineAnimationUtilities.MatchPrevious(clip, sceneObject.transform, state.editSequence.director);
+ }
+ }
+
+ InspectorWindow.RepaintAllInspectors();
+ TimelineEditor.Refresh(RefreshReason.ContentsModified);
+ }
+
+ internal static void MatchClipsToNext(WindowState state, TimelineClip[] clips)
+ {
+ if (!EnforcePreviewMode(state))
+ return;
+
+ clips = clips.OrderByDescending(x => x.start).ToArray();
+ foreach (var clip in clips)
+ {
+ var sceneObject = TimelineUtility.GetSceneGameObject(state.editSequence.director, clip.parentTrack);
+ if (sceneObject != null)
+ {
+ TimelineUndo.PushUndo(clip.asset, "Match Clip");
+ TimelineAnimationUtilities.MatchNext(clip, sceneObject.transform, state.editSequence.director);
+ }
+ }
+
+ InspectorWindow.RepaintAllInspectors();
+ TimelineEditor.Refresh(RefreshReason.ContentsModified);
+ }
+
+ public static void ResetClipOffsets(WindowState state, TimelineClip[] clips)
+ {
+ foreach (var clip in clips)
+ {
+ if (clip.asset is AnimationPlayableAsset)
+ {
+ TimelineUndo.PushUndo(clip.asset, "Reset Offsets");
+ var playableAsset = (AnimationPlayableAsset)clip.asset;
+ playableAsset.ResetOffsets();
+ }
+ }
+ state.rebuildGraph = true;
+
+ InspectorWindow.RepaintAllInspectors();
+ TimelineEditor.Refresh(RefreshReason.SceneNeedsUpdate);
+ }
+ }
+}