using System; using UnityEngine; namespace UnityEditor.Timeline { enum TimelineModeGUIState { Disabled, Hidden, Enabled } abstract class TimelineMode { public struct HeaderState { public TimelineModeGUIState breadCrumb; public TimelineModeGUIState sequenceSelector; public TimelineModeGUIState options; } public struct TrackOptionsState { public TimelineModeGUIState newButton; public TimelineModeGUIState editAsAssetButton; } public HeaderState headerState { get; protected set; } public TrackOptionsState trackOptionsState { get; protected set; } public TimelineModes mode { get; protected set; } public abstract bool ShouldShowPlayRange(WindowState state); public abstract bool ShouldShowTimeCursor(WindowState state); public virtual bool ShouldShowTrackBindings(WindowState state) { return ShouldShowTimeCursor(state); } public virtual bool ShouldShowTimeArea(WindowState state) { return !state.IsEditingAnEmptyTimeline(); } public abstract TimelineModeGUIState TrackState(WindowState state); public abstract TimelineModeGUIState ToolbarState(WindowState state); public virtual TimelineModeGUIState PreviewState(WindowState state) { return state.ignorePreview ? TimelineModeGUIState.Disabled : TimelineModeGUIState.Enabled; } public virtual TimelineModeGUIState EditModeButtonsState(WindowState state) { return TimelineModeGUIState.Enabled; } } /// /// Different mode for Timeline /// [Flags] public enum TimelineModes { /// /// A playable director with a valid timeline is selected in editor. /// Active = 1, /// /// The timeline is not editable. (the TimelineAsset file is either readonly on disk or locked by source control). /// ReadOnly = 2, /// /// The timeline cannot be played or previewed. /// Inactive = 4, /// /// Disabled Timeline. /// Disabled = 8, /// /// Timeline in AssetEditing mode. /// This mode is enabled when a timeline asset is selected in the project window. /// AssetEdition = 16, /// /// The timeline can be edited (either through playable director or selected timeline asset in project window). /// Default = Active | AssetEdition } }