123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- using System.Collections.Generic;
- using System.Linq;
- using JetBrains.Annotations;
- using UnityEditor.Timeline.Actions;
- using UnityEngine;
- using UnityEngine.Timeline;
-
- namespace UnityEditor.Timeline
- {
- [MenuEntry("Add Override Track", MenuPriority.CustomTrackActionSection.addOverrideTrack), UsedImplicitly]
- class AddOverrideTrackAction : TrackAction
- {
- public override bool Execute(IEnumerable<TrackAsset> tracks)
- {
- foreach (var animTrack in tracks.OfType<AnimationTrack>())
- {
- TimelineHelpers.CreateTrack(typeof(AnimationTrack), animTrack, "Override " + animTrack.GetChildTracks().Count());
- }
-
- return true;
- }
-
- public override ActionValidity Validate(IEnumerable<TrackAsset> tracks)
- {
- if (tracks.Any(t => t.isSubTrack || !t.GetType().IsAssignableFrom(typeof(AnimationTrack))))
- return ActionValidity.NotApplicable;
-
- if (tracks.Any(t => t.lockedInHierarchy))
- return ActionValidity.Invalid;
-
- return ActionValidity.Valid;
- }
- }
-
- [MenuEntry("Convert To Clip Track", MenuPriority.CustomTrackActionSection.convertToClipMode), UsedImplicitly]
- class ConvertToClipModeAction : TrackAction
- {
- public override bool Execute(IEnumerable<TrackAsset> tracks)
- {
- foreach (var animTrack in tracks.OfType<AnimationTrack>())
- animTrack.ConvertToClipMode();
-
- TimelineEditor.Refresh(RefreshReason.ContentsAddedOrRemoved);
-
- return true;
- }
-
- public override ActionValidity Validate(IEnumerable<TrackAsset> tracks)
- {
- if (tracks.Any(t => !t.GetType().IsAssignableFrom(typeof(AnimationTrack))))
- return ActionValidity.NotApplicable;
-
- if (tracks.Any(t => t.lockedInHierarchy))
- return ActionValidity.Invalid;
-
- if (tracks.OfType<AnimationTrack>().All(a => a.CanConvertToClipMode()))
- return ActionValidity.Valid;
-
- return ActionValidity.NotApplicable;
- }
- }
-
- [MenuEntry("Convert To Infinite Clip", MenuPriority.CustomTrackActionSection.convertFromClipMode), UsedImplicitly]
- class ConvertFromClipTrackAction : TrackAction
- {
- public override bool Execute(IEnumerable<TrackAsset> tracks)
- {
- foreach (var animTrack in tracks.OfType<AnimationTrack>())
- animTrack.ConvertFromClipMode(TimelineEditor.inspectedAsset);
-
- TimelineEditor.Refresh(RefreshReason.ContentsAddedOrRemoved);
-
- return true;
- }
-
- public override ActionValidity Validate(IEnumerable<TrackAsset> tracks)
- {
- if (tracks.Any(t => !t.GetType().IsAssignableFrom(typeof(AnimationTrack))))
- return ActionValidity.NotApplicable;
-
- if (tracks.Any(t => t.lockedInHierarchy))
- return ActionValidity.Invalid;
-
- if (tracks.OfType<AnimationTrack>().All(a => a.CanConvertFromClipMode()))
- return ActionValidity.Valid;
-
- return ActionValidity.NotApplicable;
- }
- }
-
- abstract class TrackOffsetBaseAction : TrackAction
- {
- public abstract TrackOffset trackOffset { get; }
-
- public override ActionValidity Validate(IEnumerable<TrackAsset> tracks)
- {
- if (tracks.Any(t => !t.GetType().IsAssignableFrom(typeof(AnimationTrack))))
- return ActionValidity.NotApplicable;
-
- if (tracks.Any(t => t.lockedInHierarchy))
- {
- return ActionValidity.Invalid;
- }
-
- return ActionValidity.Valid;
- }
-
- public override bool Execute(IEnumerable<TrackAsset> tracks)
- {
- foreach (var animTrack in tracks.OfType<AnimationTrack>())
- {
- animTrack.UnarmForRecord();
- animTrack.trackOffset = trackOffset;
- }
-
- TimelineEditor.Refresh(RefreshReason.ContentsModified);
- return true;
- }
- }
-
-
- [MenuEntry("Track Offsets/Apply Transform Offsets", MenuPriority.CustomTrackActionSection.applyTrackOffset), UsedImplicitly]
- [ApplyDefaultUndo]
- class ApplyTransformOffsetAction : TrackOffsetBaseAction
- {
- public override TrackOffset trackOffset
- {
- get { return TrackOffset.ApplyTransformOffsets; }
- }
- }
-
- [MenuEntry("Track Offsets/Apply Scene Offsets", MenuPriority.CustomTrackActionSection.applySceneOffset), UsedImplicitly]
- [ApplyDefaultUndo]
- class ApplySceneOffsetAction : TrackOffsetBaseAction
- {
- public override TrackOffset trackOffset
- {
- get { return TrackOffset.ApplySceneOffsets; }
- }
- }
-
- [MenuEntry("Track Offsets/Auto (Deprecated)", MenuPriority.CustomTrackActionSection.applyAutoOffset), UsedImplicitly]
- [ApplyDefaultUndo]
- class ApplyAutoAction : TrackOffsetBaseAction
- {
- public override TrackOffset trackOffset
- {
- get { return TrackOffset.Auto; }
- }
- }
- }
|