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); } }
public void Delete() { EditorClipFactory.RemoveEditorClip(m_Clip); ClipModifier.Delete(m_Clip.parentTrack.timelineAsset, m_Clip); }