114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			114 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using System.Collections.Generic; | ||
|  | using UnityEngine.Playables; | ||
|  | using UnityEngine.Timeline; | ||
|  | 
 | ||
|  | namespace UnityEditor.Timeline | ||
|  | { | ||
|  |     interface ISequenceState : IDisposable | ||
|  |     { | ||
|  |         TimelineAsset asset { get; } | ||
|  |         PlayableDirector director { get; } | ||
|  |         TimelineClip hostClip { get; } | ||
|  |         List<UnityEngine.Object> cachedChildAssets { get; } | ||
|  |         double start { get; } | ||
|  |         double timeScale { get; } | ||
|  |         double duration { get; } | ||
|  |         bool isReadOnly { get; } | ||
|  |         bool isAssetOnly { get; set; } | ||
|  |         TimelineAssetViewModel viewModel { get; } | ||
|  |         double time { get; set; } | ||
|  |         int frame { get; set; } | ||
|  |         double frameRate { get; set; } | ||
|  | 
 | ||
|  |         Range GetEvaluableRange(); | ||
|  |         double ToGlobalTime(double t); | ||
|  |         double ToLocalTime(double t); | ||
|  |         void ResetIsReadOnly(); | ||
|  |         void InvalidateChildAssetCache(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * This class is used to hold default values for an implementation of ISequenceState. | ||
|  |      * It could be removed in a phase 2, but it is currently used to limit the scope of | ||
|  |      * this refactoring: it allows client code to access sequence info without having to | ||
|  |      * worry about `currentSequence` being null. | ||
|  |      * In the future this should be removed and we should pass around the correct data | ||
|  |      * structure (i.e. SequenceState OR WindowState) based on the situation. | ||
|  |      */ | ||
|  |     class NullSequenceState : ISequenceState | ||
|  |     { | ||
|  |         public TimelineAsset asset { get { return null; } } | ||
|  |         public PlayableDirector director { get { return null; } } | ||
|  |         public TimelineClip hostClip { get { return null; } } | ||
|  | 
 | ||
|  |         List<UnityEngine.Object> ISequenceState.cachedChildAssets { get { return null; } } | ||
|  | 
 | ||
|  |         public double start { get { return 0.0; } } | ||
|  |         public double timeScale { get { return 1.0; } } | ||
|  |         public double duration { get { return 0.0; } } | ||
|  |         public bool isReadOnly { get { return false; } } | ||
|  |         public bool isAssetOnly { get { return false; } set { } } | ||
|  | 
 | ||
|  |         TimelineAssetViewModel m_ViewModel; | ||
|  | 
 | ||
|  |         public TimelineAssetViewModel viewModel | ||
|  |         { | ||
|  |             get | ||
|  |             { | ||
|  |                 if (m_ViewModel == null) | ||
|  |                     m_ViewModel = TimelineWindowViewPrefs.CreateUnassociatedViewModel(); | ||
|  |                 return m_ViewModel; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         public double time | ||
|  |         { | ||
|  |             get { return 0.0; } | ||
|  |             set { /* NO-OP*/ } | ||
|  |         } | ||
|  | 
 | ||
|  |         public int frame | ||
|  |         { | ||
|  |             get { return 0; } | ||
|  |             set { /* NO-OP*/ } | ||
|  |         } | ||
|  | 
 | ||
|  |         public double frameRate | ||
|  |         { | ||
|  |             get { return TimelineAsset.EditorSettings.kDefaultFrameRate; } | ||
|  |             set { /* NO-OP*/ } | ||
|  |         } | ||
|  | 
 | ||
|  |         public Range GetEvaluableRange() | ||
|  |         { | ||
|  |             return new Range(); | ||
|  |         } | ||
|  | 
 | ||
|  |         public double ToGlobalTime(double t) | ||
|  |         { | ||
|  |             return t; | ||
|  |         } | ||
|  | 
 | ||
|  |         public double ToLocalTime(double t) | ||
|  |         { | ||
|  |             return t; | ||
|  |         } | ||
|  | 
 | ||
|  |         public void ResetIsReadOnly() | ||
|  |         { | ||
|  |             // NO-OP | ||
|  |         } | ||
|  | 
 | ||
|  |         public void InvalidateChildAssetCache() | ||
|  |         { | ||
|  |             // NO-OP | ||
|  |         } | ||
|  | 
 | ||
|  |         public void Dispose() | ||
|  |         { | ||
|  |             // NO-OP | ||
|  |         } | ||
|  |     } | ||
|  | } |