diff options
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow.cs | 541 |
1 files changed, 0 insertions, 541 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow.cs deleted file mode 100644 index e3e21bc..0000000 --- a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow.cs +++ /dev/null @@ -1,541 +0,0 @@ -using System; -using System.Collections.Generic; -using UnityEditor.Callbacks; -using UnityEngine; -using UnityEngine.Events; -using UnityEngine.Playables; -using UnityEngine.SceneManagement; -using UnityEngine.Timeline; - -namespace UnityEditor.Timeline -{ - [EditorWindowTitle(title = "Timeline", useTypeNameAsIconName = true)] - partial class TimelineWindow : EditorWindow, IHasCustomMenu - { - [Serializable] - public class TimelineWindowPreferences - { - public bool frameSnap = true; - public bool edgeSnaps = true; - public bool muteAudioScrub = true; - public bool playRangeLoopMode = true; - public PlaybackScrollMode autoScrollMode; - public EditMode.EditType editType = EditMode.EditType.Mix; - public TimeReferenceMode timeReferenceMode = TimeReferenceMode.Local; - } - - [SerializeField] TimelineWindowPreferences m_Preferences = new TimelineWindowPreferences(); - public TimelineWindowPreferences preferences { get { return m_Preferences; } } - - [SerializeField] - EditorGUIUtility.EditorLockTracker m_LockTracker = new EditorGUIUtility.EditorLockTracker(); - - readonly PreviewResizer m_PreviewResizer = new PreviewResizer(); - bool m_LastFrameHadSequence; - bool m_ForceRefreshLastSelection; - int m_CurrentSceneHashCode = -1; - - [NonSerialized] - bool m_HasBeenInitialized; - - [SerializeField] - SequenceHierarchy m_SequenceHierarchy; - static SequenceHierarchy s_LastHierarchy; - - public static TimelineWindow instance { get; private set; } - public Rect clientArea { get; set; } - public bool isDragging { get; set; } - public static DirectorStyles styles { get { return DirectorStyles.Instance; } } - public List<TimelineTrackBaseGUI> allTracks - { - get - { - return treeView != null ? treeView.allTrackGuis : new List<TimelineTrackBaseGUI>(); - } - } - - public WindowState state { get; private set; } - - public bool locked - { - get - { - // we can never be in a locked state if there is no timeline asset - if (state.editSequence.asset == null) - return false; - - return m_LockTracker.isLocked; - } - set { m_LockTracker.isLocked = value; } - } - - public bool hierarchyChangedThisFrame { get; private set; } - - public TimelineWindow() - { - InitializeManipulators(); - m_LockTracker.lockStateChanged.AddPersistentListener(OnLockStateChanged, UnityEventCallState.EditorAndRuntime); - } - - void OnLockStateChanged(bool locked) - { - // Make sure that upon unlocking, any selection change is updated - // Case 1123119 -- only force rebuild if not recording - if (!locked) - RefreshSelection(state != null && !state.recording); - } - - void OnEnable() - { - if (m_SequencePath == null) - m_SequencePath = new SequencePath(); - - if (m_SequenceHierarchy == null) - { - // The sequence hierarchy will become null if maximize on play is used for in/out of playmode - // a static var will hang on to the reference - if (s_LastHierarchy != null) - m_SequenceHierarchy = s_LastHierarchy; - else - m_SequenceHierarchy = SequenceHierarchy.CreateInstance(); - - state = null; - } - s_LastHierarchy = m_SequenceHierarchy; - - titleContent = GetLocalizedTitleContent(); - - m_PreviewResizer.Init("TimelineWindow"); - - // Unmaximize fix : when unmaximizing, a new window is enabled and disabled. Prevent it from overriding the instance pointer. - if (instance == null) - instance = this; - - AnimationClipCurveCache.Instance.OnEnable(); - TrackAsset.OnClipPlayableCreate += m_PlayableLookup.UpdatePlayableLookup; - TrackAsset.OnTrackAnimationPlayableCreate += m_PlayableLookup.UpdatePlayableLookup; - - if (state == null) - { - state = new WindowState(this, s_LastHierarchy); - Initialize(); - RefreshSelection(true); - m_ForceRefreshLastSelection = true; - } - } - - void OnDisable() - { - if (instance == this) - instance = null; - - if (state != null) - state.Reset(); - - if (instance == null) - SelectionManager.RemoveTimelineSelection(); - - AnimationClipCurveCache.Instance.OnDisable(); - TrackAsset.OnClipPlayableCreate -= m_PlayableLookup.UpdatePlayableLookup; - TrackAsset.OnTrackAnimationPlayableCreate -= m_PlayableLookup.UpdatePlayableLookup; - TimelineWindowViewPrefs.SaveAll(); - TimelineWindowViewPrefs.UnloadAllViewModels(); - } - - void OnDestroy() - { - if (state != null) - { - state.OnDestroy(); - } - m_HasBeenInitialized = false; - RemoveEditorCallbacks(); - AnimationClipCurveCache.Instance.Clear(); - TimelineAnimationUtilities.UnlinkAnimationWindow(); - } - - void OnLostFocus() - { - isDragging = false; - - if (state != null) - state.captured.Clear(); - - Repaint(); - } - - void OnFocus() - { - if (state == null) return; - - if (lastSelectedGO != Selection.activeObject) - { - // selection may have changed while Timeline Editor was looking away - RefreshSelection(false); - - // Inline curves may have become out of sync - RefreshInlineCurves(); - } - } - - void OnHierarchyChange() - { - hierarchyChangedThisFrame = true; - Repaint(); - } - - void OnStateChange() - { - state.UpdateRecordingState(); - if (treeView != null && state.editSequence.asset != null) - treeView.Reload(); - if (m_MarkerHeaderGUI != null) - m_MarkerHeaderGUI.Rebuild(); - } - - void OnGUI() - { - InitializeGUIIfRequired(); - UpdateGUIConstants(); - UpdateViewStateHash(); - - EditMode.HandleModeClutch(); // TODO We Want that here? - - DetectStylesChange(); - DetectActiveSceneChanges(); - DetectStateChanges(); - - state.ProcessStartFramePendingUpdates(); - - var clipRect = new Rect(0.0f, 0.0f, position.width, position.height); - clipRect.xMin += state.sequencerHeaderWidth; - - using (new GUIViewportScope(clipRect)) - state.InvokeWindowOnGuiStarted(Event.current); - - if (Event.current.type == EventType.MouseDrag && state != null && state.mouseDragLag > 0.0f) - { - state.mouseDragLag -= Time.deltaTime; - return; - } - - if (PerformUndo()) - return; - - if (EditorApplication.isPlaying) - { - if (state != null) - { - if (state.recording) - state.recording = false; - } - Repaint(); - } - - clientArea = position; - - PlaybackScroller.AutoScroll(state); - DoLayout(); - - // overlays - if (state.captured.Count > 0) - { - using (new GUIViewportScope(clipRect)) - { - foreach (var o in state.captured) - { - o.Overlay(Event.current, state); - } - Repaint(); - } - } - - if (state.showQuadTree) - state.spacePartitioner.DebugDraw(); - - // attempt another rebuild -- this will avoid 1 frame flashes - if (Event.current.type == EventType.Repaint) - { - RebuildGraphIfNecessary(); - state.ProcessEndFramePendingUpdates(); - } - - using (new GUIViewportScope(clipRect)) - { - if (Event.current.type == EventType.Repaint) - EditMode.inputHandler.OnGUI(state, Event.current); - } - - if (Event.current.type == EventType.Repaint) - hierarchyChangedThisFrame = false; - } - - static void DetectStylesChange() - { - DirectorStyles.ReloadStylesIfNeeded(); - } - - void DetectActiveSceneChanges() - { - if (m_CurrentSceneHashCode == -1) - { - m_CurrentSceneHashCode = SceneManager.GetActiveScene().GetHashCode(); - } - - if (m_CurrentSceneHashCode != SceneManager.GetActiveScene().GetHashCode()) - { - bool isSceneStillLoaded = false; - for (int a = 0; a < SceneManager.sceneCount; a++) - { - var scene = SceneManager.GetSceneAt(a); - if (scene.GetHashCode() == m_CurrentSceneHashCode && scene.isLoaded) - { - isSceneStillLoaded = true; - break; - } - } - - if (!isSceneStillLoaded) - { - if (!locked) - ClearCurrentTimeline(); - m_CurrentSceneHashCode = SceneManager.GetActiveScene().GetHashCode(); - } - } - } - - void DetectStateChanges() - { - if (state != null) - { - state.editSequence.ResetIsReadOnly(); //Force reset readonly for asset flag for each frame. - // detect if the sequence was removed under our feet - if (m_LastFrameHadSequence && state.editSequence.asset == null) - { - ClearCurrentTimeline(); - } - m_LastFrameHadSequence = state.editSequence.asset != null; - - // the currentDirector can get set to null by a deletion or scene unloading so polling is required - if (state.editSequence.director == null) - { - state.recording = false; - state.previewMode = false; - - //Case 1201405 : Check if the lock state is valid with the lock tracker state - if (locked != m_LockTracker.isLocked) - m_LockTracker.isLocked = locked; - - if (!locked && m_LastFrameHadSequence) - { - // the user may be adding a new PlayableDirector to a selected GameObject, make sure the timeline editor is shows the proper director if none is already showing - var selectedGameObject = Selection.activeObject != null ? Selection.activeObject as GameObject : null; - var selectedDirector = selectedGameObject != null ? selectedGameObject.GetComponent<PlayableDirector>() : null; - if (selectedDirector != null) - { - SetCurrentTimeline(selectedDirector); - } - } - } - else - { - // the user may have changed the timeline associated with the current director - if (state.editSequence.asset != state.editSequence.director.playableAsset) - { - if (!locked) - { - SetCurrentTimeline(state.editSequence.director); - } - else - { - // Keep locked on the current timeline but set the current director to null since it's not the timeline owner anymore - SetCurrentTimeline(state.editSequence.asset); - } - } - } - } - } - - void Initialize() - { - if (!m_HasBeenInitialized) - { - InitializeStateChange(); - InitializeEditorCallbacks(); - m_HasBeenInitialized = true; - } - } - - void RefreshLastSelectionIfRequired() - { - // case 1088918 - workaround for the instanceID to object cache being update during Awake. - // This corrects any playableDirector ptrs with the correct cached version - // This can happen when going from edit to playmode - if (m_ForceRefreshLastSelection) - { - m_ForceRefreshLastSelection = false; - RestoreLastSelection(true); - } - } - - void InitializeGUIIfRequired() - { - RefreshLastSelectionIfRequired(); - InitializeTimeArea(); - if (treeView == null && state.editSequence.asset != null) - { - treeView = new TimelineTreeViewGUI(this, state.editSequence.asset, position); - } - } - - void UpdateGUIConstants() - { - m_HorizontalScrollBarSize = - GUI.skin.horizontalScrollbar.fixedHeight + GUI.skin.horizontalScrollbar.margin.top; - m_VerticalScrollBarSize = (treeView != null && treeView.showingVerticalScrollBar) - ? GUI.skin.verticalScrollbar.fixedWidth + GUI.skin.verticalScrollbar.margin.left - : 0; - } - - void UpdateViewStateHash() - { - if (Event.current.type == EventType.Layout) - state.UpdateViewStateHash(); - } - - static bool PerformUndo() - { - if (!Event.current.isKey) - return false; - - if (Event.current.keyCode != KeyCode.Z) - return false; - - if (!EditorGUI.actionKey) - return false; - - return true; - } - - public void RebuildGraphIfNecessary(bool evaluate = true) - { - if (state == null || state.editSequence.director == null || state.editSequence.asset == null) - return; - - if (state.rebuildGraph) - { - // rebuilding the graph resets the time - double time = state.editSequence.time; - - var wasPlaying = false; - - // disable preview mode, - if (!EditorApplication.isPlaying) - { - wasPlaying = state.playing; - - state.previewMode = false; - state.GatherProperties(state.masterSequence.director); - } - state.RebuildPlayableGraph(); - state.editSequence.time = time; - - if (wasPlaying) - state.Play(); - - if (evaluate) - { - // put the scene back in the correct state - state.EvaluateImmediate(); - - // this is necessary to see accurate results when inspector refreshes - // case 1154802 - this will property re-force time on the director, so - // the play head won't snap back to the timeline duration on rebuilds - if (!state.playing) - state.Evaluate(); - } - Repaint(); - } - - state.rebuildGraph = false; - } - - // for tests - public new void RepaintImmediately() - { - base.RepaintImmediately(); - } - - internal static bool IsEditingTimelineAsset(TimelineAsset timelineAsset) - { - return instance != null && instance.state != null && instance.state.editSequence.asset == timelineAsset; - } - - internal static void RepaintIfEditingTimelineAsset(TimelineAsset timelineAsset) - { - if (IsEditingTimelineAsset(timelineAsset)) - instance.Repaint(); - } - - internal class DoCreateTimeline : ProjectWindowCallback.EndNameEditAction - { - public override void Action(int instanceId, string pathName, string resourceFile) - { - var timeline = ScriptableObject.CreateInstance<TimelineAsset>(); - AssetDatabase.CreateAsset(timeline, pathName); - ProjectWindowUtil.ShowCreatedAsset(timeline); - } - } - - [MenuItem("Assets/Create/Timeline", false, 450)] - public static void CreateNewTimeline() - { - var icon = EditorGUIUtility.IconContent("TimelineAsset Icon").image as Texture2D; - ProjectWindowUtil.StartNameEditingIfProjectWindowExists(0, ScriptableObject.CreateInstance<DoCreateTimeline>(), "New Timeline.playable", icon, null); - } - - [MenuItem("Window/Sequencing/Timeline", false, 1)] - public static void ShowWindow() - { - GetWindow<TimelineWindow>(typeof(SceneView)); - instance.Focus(); - } - - [OnOpenAsset(1)] - public static bool OnDoubleClick(int instanceID, int line) - { - var assetDoubleClicked = EditorUtility.InstanceIDToObject(instanceID) as TimelineAsset; - if (assetDoubleClicked == null) - return false; - - ShowWindow(); - instance.SetCurrentTimeline(assetDoubleClicked); - - return true; - } - - public virtual void AddItemsToMenu(GenericMenu menu) - { - bool disabled = state == null || state.editSequence.asset == null; - - m_LockTracker.AddItemsToMenu(menu, disabled); - } - - protected virtual void ShowButton(Rect r) - { - bool disabled = state == null || state.editSequence.asset == null; - - m_LockTracker.ShowButton(r, DirectorStyles.Instance.lockButton, disabled); - } - - internal void TreeViewKeyboardCallback() - { - if (Event.current.type != EventType.KeyDown) - return; - if (TimelineAction.HandleShortcut(state, Event.current)) - { - Event.current.Use(); - } - } - } -} |
