98 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System.Collections.Generic;
 | |
| 
 | |
| namespace UnityEditor.Timeline
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Interface to navigate through Timelines and SubTimelines for the Timeline window.
 | |
|     /// </summary>
 | |
|     /// <remarks>
 | |
|     /// TimelineNavigator gives you access to the Timeline window breadcrumbs functionality. Use it to programmatically
 | |
|     /// dig into SubTimelines, navigate to parent Timelines or navigate Timeline Window breadcrumbs.
 | |
|     /// </remarks>
 | |
|     public sealed class TimelineNavigator
 | |
|     {
 | |
|         TimelineWindow.TimelineNavigatorImpl m_Impl;
 | |
|         internal TimelineNavigator(IWindowStateProvider windowState)
 | |
|         {
 | |
|             m_Impl = new TimelineWindow.TimelineNavigatorImpl(windowState);
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the SequenceContext associated with the Timeline currently shown in the Timeline window.
 | |
|         /// </summary>
 | |
|         /// <returns>The SequenceContext associated with the Timeline currently shown in the Timeline window.</returns>
 | |
|         /// <remarks>Equivalent to <c>TimelineNavigator.GetBreadCrumbs().Last()</c></remarks>
 | |
|         /// <exception cref="System.InvalidOperationException"> The Window associated to this instance has been destroyed.</exception>
 | |
|         public SequenceContext GetCurrentContext()
 | |
|         {
 | |
|             return m_Impl.GetCurrentContext();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the parent SequenceContext for the Timeline currently shown in the Timeline window.
 | |
|         /// </summary>
 | |
|         /// <returns>The parent SequenceContext for the Timeline currently shown in the Timeline window if there is one; an invalid SequenceContext otherwise.</returns>
 | |
|         /// <exception cref="System.InvalidOperationException"> The Window associated to this instance has been destroyed.</exception>
 | |
|         public SequenceContext GetParentContext()
 | |
|         {
 | |
|             return m_Impl.GetParentContext();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the first SequenceContext in the breadcrumbs.
 | |
|         /// </summary>
 | |
|         /// <returns>The first SequenceContext in the breadcrumbs.</returns>
 | |
|         /// <remarks>Equivalent to <c>TimelineNavigator.GetBreadCrumbs().First()</c></remarks>
 | |
|         /// <exception cref="System.InvalidOperationException"> The Window associated to this instance has been destroyed.</exception>
 | |
|         public SequenceContext GetRootContext()
 | |
|         {
 | |
|             return m_Impl.GetRootContext();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the collection of child contexts that can be navigated to from the current context.
 | |
|         /// </summary>
 | |
|         /// <returns>The collection of child contexts that can be navigated to from the current context.</returns>
 | |
|         /// <exception cref="System.InvalidOperationException"> The Window associated to this instance has been destroyed.</exception>
 | |
|         public IEnumerable<SequenceContext> GetChildContexts()
 | |
|         {
 | |
|             return m_Impl.GetChildContexts();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Gets the collection of SequenceContexts associated with the breadcrumbs shown in the TimelineEditorWindow.
 | |
|         /// </summary>
 | |
|         /// <remarks>This operation can be expensive. Consider caching the results instead of calling the method multiple times.</remarks>
 | |
|         /// <returns>The collection of SequenceContexts associated with the breadcrumbs shown in the TimelineEditorWindow, from the root context to the current context.</returns>
 | |
|         /// <exception cref="System.InvalidOperationException"> The Window associated to this instance has been destroyed.</exception>
 | |
|         public IEnumerable<SequenceContext> GetBreadcrumbs()
 | |
|         {
 | |
|             return m_Impl.GetBreadcrumbs();
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Navigates to a new SequenceContext.
 | |
|         /// </summary>
 | |
|         /// <param name="context">The context to navigate to.</param>
 | |
|         /// <remarks>
 | |
|         /// The SequenceContext provided must be a valid navigation destination.
 | |
|         ///
 | |
|         /// Valid navigation destinations:
 | |
|         /// * The parent context returned by <see cref="GetParentContext"/>.
 | |
|         /// * The root context returned by <see cref="GetRootContext"/>.
 | |
|         /// * Any SequenceContext returned by <see cref="GetChildContexts"/>.
 | |
|         /// * Any SequenceContext returned by <see cref="GetBreadcrumbs"/>.
 | |
|         ///
 | |
|         /// Note: This method cannot be used to change the root SequenceContext. To change the root SequenceContext, use <see cref="TimelineEditorWindow.SetTimeline"/>.
 | |
|         ///
 | |
|         /// </remarks>
 | |
|         /// <exception cref="System.InvalidOperationException"> The Window associated to this instance has been destroyed.</exception>
 | |
|         /// <exception cref="System.ArgumentException"> The context is not valid.</exception>
 | |
|         /// <exception cref="System.InvalidOperationException"> The context is not a valid navigation destination.</exception>
 | |
|         public void NavigateTo(SequenceContext context)
 | |
|         {
 | |
|             m_Impl.NavigateTo(context);
 | |
|         }
 | |
|     }
 | |
| }
 |