Example #1
0
 public override bool Execute(TimelineWindow.TimelineState state, TimelineClip[] clips)
 {
     state.Stop();
     ClipModifier.Delete(state.timeline, clips);
     SelectionManager.Clear();
     state.Refresh(true);
     return(true);
 }
        internal static void ConvertFromClipMode(this AnimationTrack track, TimelineAsset timeline)
        {
            if (!track.CanConvertFromClipMode())
            {
                return;
            }

            UndoExtensions.RegisterTrack(track, L10n.Tr("Convert From Clip"));

            var clip  = track.clips[0];
            var delta = (float)clip.start;

            track.infiniteClipTimeOffset        = 0.0f;
            track.infiniteClipPreExtrapolation  = clip.preExtrapolationMode;
            track.infiniteClipPostExtrapolation = clip.postExtrapolationMode;

            var animAsset = clip.asset as AnimationPlayableAsset;

            if (animAsset)
            {
                track.infiniteClipOffsetPosition    = animAsset.position;
                track.infiniteClipOffsetEulerAngles = animAsset.eulerAngles;
                track.infiniteClipRemoveOffset      = animAsset.removeStartOffset;
                track.infiniteClipApplyFootIK       = animAsset.applyFootIK;
                track.infiniteClipLoop = animAsset.loop;
            }

            // clone it, it may not be in the same asset
            var animClip = clip.animationClip;

            float scale = (float)clip.timeScale;

            if (!Mathf.Approximately(scale, 1.0f))
            {
                if (!Mathf.Approximately(scale, 0.0f))
                {
                    scale = 1.0f / scale;
                }
                animClip.ScaleTime(scale);
            }

            TimelineUndo.PushUndo(animClip, L10n.Tr("Convert From Clip"));
            animClip.ShiftBySeconds(delta);

            // manually delete the clip
            var asset = clip.asset;

            clip.asset = null;

            // Remove the clip, remove old assets
            ClipModifier.Delete(timeline, clip);
            TimelineUndo.PushDestroyUndo(null, track, asset);

            track.infiniteClip = animClip;

            EditorUtility.SetDirty(track);
        }
 public static bool Delete(TimelineAsset timeline, TimelineClip[] clips)
 {
     for (int i = 0; i < clips.Length; i++)
     {
         TimelineClip clip = clips[i];
         ClipModifier.Delete(timeline, clip);
     }
     return(true);
 }
 public static void ConvertFromClipMode(this AnimationTrack track, TimelineAsset timeline)
 {
     if (track.CanConvertFromClipMode())
     {
         TimelineUndo.PushUndo(track, "Convert From Clip");
         TimelineClip timelineClip = track.clips[0];
         float        time         = (float)timelineClip.start;
         track.openClipTimeOffset        = 0.0;
         track.openClipPreExtrapolation  = timelineClip.preExtrapolationMode;
         track.openClipPostExtrapolation = timelineClip.postExtrapolationMode;
         AnimationPlayableAsset animationPlayableAsset = timelineClip.asset as AnimationPlayableAsset;
         if (animationPlayableAsset)
         {
             track.openClipOffsetPosition = animationPlayableAsset.position;
             track.openClipOffsetRotation = animationPlayableAsset.rotation;
         }
         AnimationClip animationClip = timelineClip.animationClip;
         float         num           = (float)timelineClip.timeScale;
         if (!Mathf.Approximately(num, 1f))
         {
             if (!Mathf.Approximately(num, 0f))
             {
                 num = 1f / num;
             }
             animationClip.ScaleTime(num);
         }
         TimelineUndo.PushUndo(animationClip, "Convert From Clip");
         animationClip.ShiftBySeconds(time);
         Object asset = timelineClip.asset;
         timelineClip.asset = null;
         ClipModifier.Delete(timeline, timelineClip);
         TimelineUndo.PushDestroyUndo(null, track, asset, "Convert From Clip");
         track.animClip = animationClip;
         EditorUtility.SetDirty(track);
     }
 }
Example #5
0
 public void Delete()
 {
     EditorClipFactory.RemoveEditorClip(m_Clip);
     ClipModifier.Delete(m_Clip.parentTrack.timelineAsset, m_Clip);
 }