public static TimelineClip CreateClipOnTrack(Object asset, TrackAsset parentTrack, ITimelineState state, Vector2 mousePosition) { double end = parentTrack.end; TimelineClip timelineClip = parentTrack.CreateClipFromAsset(asset); if (timelineClip != null) { SelectionManager.Clear(); timelineClip.timeScale = 1.0; if (!float.IsPositiveInfinity(mousePosition.x) && !float.IsPositiveInfinity(mousePosition.y)) { timelineClip.start = (double)state.ScreenSpacePixelToTimeAreaTime(mousePosition.x); } else { timelineClip.start = state.SnapToFrameIfRequired(end); } timelineClip.start = Math.Max(0.0, timelineClip.start); timelineClip.mixInCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); timelineClip.mixOutCurve = AnimationCurve.EaseInOut(0f, 1f, 1f, 0f); SelectionManager.Add(timelineClip); parentTrack.CalculateExtrapolationTimes(); state.Refresh(); } return(timelineClip); }
private static void AddSubTrack(ITimelineState state, Type trackOfType, string trackName, TrackAsset track) { TrackAsset childAsset = state.timeline.CreateTrack(trackOfType, track, trackName); TimelineCreateUtilities.SaveAssetIntoObject(childAsset, track); track.SetCollapsed(false); state.Refresh(); }
private void CreateExistingMarker(string key, ITimelineMarkerContainer container, ITimelineState state) { Vector3 mousePosition = (this.trackMenuContext.clipTimeCreation != TrackDrawer.TrackMenuContext.ClipTimeCreation.Mouse) ? TimelineHelpers.sInvalidMousePosition : this.trackMenuContext.mousePosition; double time = TrackDrawer.CalculateMarkerTimeForMousePosition(container as TrackAsset, state, mousePosition); TimelineUndo.PushUndo(container as Object, "Create Marker"); TimelineMarker newEvent = container.CreateMarker(key, time); TrackDrawer.SelectMarkerInInspector(state, newEvent); state.Refresh(); }
public override void OnBuildTrackContextMenu(GenericMenu menu, TrackAsset track, ITimelineState state) { base.OnBuildTrackContextMenu(menu, track, state); bool flag = false; AnimationTrack animTrack = track as AnimationTrack; if (animTrack != null) { if (animTrack.CanConvertFromClipMode() || animTrack.CanConvertToClipMode()) { bool flag2 = animTrack.CanConvertFromClipMode(); bool flag3 = animTrack.CanConvertToClipMode(); if (flag2) { menu.AddItem(EditorGUIUtility.TextContent("Convert To Infinite Clip"), false, delegate(object parentTrack) { animTrack.ConvertFromClipMode(state.timeline); }, track); flag = true; } if (flag3) { menu.AddItem(EditorGUIUtility.TextContent("Convert To Clip Track"), false, delegate(object parentTrack) { animTrack.ConvertToClipMode(); state.Refresh(); }, track); } } } if (!track.isSubTrack) { if (flag) { menu.AddSeparator(""); } menu.AddItem(EditorGUIUtility.TextContent("Add Override Track"), false, delegate(object parentTrack) { AnimationTrackDrawer.AddSubTrack(state, typeof(AnimationTrack), "Override " + track.subTracks.Count.ToString(), track); }, track); } }