| using System.Linq; |
| using UnityEngine; |
| using UnityEngine.Timeline; |
|
|
| namespace UnityEditor.Timeline |
| { |
| static class AnimationOffsetMenu |
| { |
| public static string MatchFieldsPrefix = L10n.Tr("Match Offsets Fields/"); |
|
|
| static bool EnforcePreviewMode() |
| { |
| TimelineEditor.state.previewMode = true; |
| if (!TimelineEditor.state.previewMode) |
| { |
| Debug.LogError("Match clips cannot be completed because preview mode cannot be enabed"); |
| return false; |
| } |
| return true; |
| } |
|
|
| internal static void MatchClipsToPrevious(TimelineClip[] clips) |
| { |
| if (!EnforcePreviewMode()) |
| return; |
|
|
| clips = clips.OrderBy(x => x.start).ToArray(); |
| foreach (var clip in clips) |
| { |
| var sceneObject = TimelineUtility.GetSceneGameObject(TimelineEditor.inspectedDirector, clip.GetParentTrack()); |
| if (sceneObject != null) |
| { |
| TimelineAnimationUtilities.MatchPrevious(clip, sceneObject.transform, TimelineEditor.inspectedDirector); |
| } |
| } |
|
|
| InspectorWindow.RepaintAllInspectors(); |
| TimelineEditor.Refresh(RefreshReason.ContentsModified); |
| } |
|
|
| internal static void MatchClipsToNext(TimelineClip[] clips) |
| { |
| if (!EnforcePreviewMode()) |
| return; |
|
|
| clips = clips.OrderByDescending(x => x.start).ToArray(); |
| foreach (var clip in clips) |
| { |
| var sceneObject = TimelineUtility.GetSceneGameObject(TimelineEditor.inspectedDirector, clip.GetParentTrack()); |
| if (sceneObject != null) |
| { |
| TimelineAnimationUtilities.MatchNext(clip, sceneObject.transform, TimelineEditor.inspectedDirector); |
| } |
| } |
|
|
| InspectorWindow.RepaintAllInspectors(); |
| TimelineEditor.Refresh(RefreshReason.ContentsModified); |
| } |
|
|
| public static void ResetClipOffsets(TimelineClip[] clips) |
| { |
| foreach (var clip in clips) |
| { |
| var asset = clip.asset as AnimationPlayableAsset; |
| if (asset != null) |
| asset.ResetOffsets(); |
| } |
|
|
| InspectorWindow.RepaintAllInspectors(); |
| TimelineEditor.Refresh(RefreshReason.ContentsModified); |
| } |
| } |
| } |
|
|