Esempio n. 1
0
 public static void SetShowInlineCurves(TrackAsset track, bool inlineOn)
 {
     if (!(track == null))
     {
         TimelineWindowViewPrefs.GetTrackViewModelData(track).showInlineCurves = inlineOn;
     }
 }
Esempio n. 2
0
        public static TrackViewModelData GetTrackViewModelData(TrackAsset track)
        {
            TrackViewModelData result;

            if (track == null)
            {
                result = new TrackViewModelData();
            }
            else if (track.timelineAsset == null)
            {
                result = new TrackViewModelData();
            }
            else
            {
                TimelineAssetViewModel timelineAssetViewData = TimelineWindowViewPrefs.GetTimelineAssetViewData(track.timelineAsset);
                TrackViewModelData     trackViewModelData;
                if (timelineAssetViewData.tracksViewModelData.TryGetValue(track, out trackViewModelData))
                {
                    result = trackViewModelData;
                }
                else
                {
                    trackViewModelData = new TrackViewModelData();
                    timelineAssetViewData.tracksViewModelData[track] = trackViewModelData;
                    result = trackViewModelData;
                }
            }
            return(result);
        }
Esempio n. 3
0
 public static void SetTrackCollapsed(TrackAsset track, bool collapsed)
 {
     if (!(track == null))
     {
         TimelineWindowViewPrefs.GetTrackViewModelData(track).collapsed = collapsed;
     }
 }
Esempio n. 4
0
        public TimelineTreeViewGUI(TimelineWindow sequencerWindow, TimelineAsset timeline, Rect rect)
        {
            m_Timeline = timeline;
            m_Window   = sequencerWindow;

            var treeviewState = new TreeViewState();

            treeviewState.scrollPos = new Vector2(treeviewState.scrollPos.x, TimelineWindowViewPrefs.GetOrCreateViewModel(m_Timeline).verticalScroll);

            m_TreeView = new TreeViewController(sequencerWindow, treeviewState);
            m_TreeView.horizontalScrollbarStyle = GUIStyle.none;
            m_TreeView.scrollViewStyle          = GUI.skin.scrollView;
            m_TreeView.keyboardInputCallback    = sequencerWindow.TreeViewKeyboardCallback;


            m_TimelineTreeView = new TimelineTreeView(sequencerWindow, m_TreeView);
            var dragging = new TimelineDragging(m_TreeView, m_Window, m_Timeline);

            m_DataSource = new TimelineDataSource(this, m_TreeView, sequencerWindow);

            m_DataSource.onVisibleRowsChanged += m_TimelineTreeView.CalculateRowRects;
            m_TreeView.Init(rect, m_DataSource, m_TimelineTreeView, dragging);

            m_DataSource.ExpandItems(m_DataSource.root);
        }
Esempio n. 5
0
 public static void SetInlineCurveHeight(TrackAsset asset, float height)
 {
     if (asset != null)
     {
         TimelineWindowViewPrefs.GetTrackViewModelData(asset).inlineAnimationCurveHeight = height;
     }
 }
Esempio n. 6
0
        public void OnGUI(Rect rect)
        {
            int keyboardControl = GUIUtility.GetControlID(FocusType.Passive, rect);

            m_TreeView.OnGUI(rect, keyboardControl);
            TimelineWindowViewPrefs.GetOrCreateViewModel(m_Timeline).verticalScroll = m_TreeView.state.scrollPos.y;
        }
Esempio n. 7
0
 static void CommitExtension(TimelineTrackGUI trackGUI)
 {
     if (trackGUI != null)
     {
         TimelineWindowViewPrefs.SetTrackHeightExtension(trackGUI.track, trackGUI.heightExtension);
     }
 }
Esempio n. 8
0
        public void Dispose()
        {
            if (asset != null)
            {
                asset.AssetModifiedOnDisk -= AssetOnAssetModifiedOnDisk;
            }

            TimelineWindowViewPrefs.SaveViewModel(asset);
        }
Esempio n. 9
0
        void CreateLists(IRowGUI parent)
        {
            var markerCount = parent.asset.GetMarkerCount();

            if (markerCount == 0)
            {
                return;
            }

            var accumulator   = new List <IMarker>();
            var sortedMarkers = new List <IMarker>(parent.asset.GetMarkers());
            var vm            = TimelineWindowViewPrefs.GetTrackViewModelData(parent.asset);

            sortedMarkers.Sort((lhs, rhs) =>
            {
                // Sort by time first
                var timeComparison = lhs.time.CompareTo(rhs.time);
                if (timeComparison != 0)
                {
                    return(timeComparison);
                }

                // If there's a collision, sort by edit timestamp
                var lhsObject = lhs as object;
                var rhsObject = rhs as object;

                if (lhsObject.Equals(null) || rhsObject.Equals(null))
                {
                    return(0);
                }

                var lhsHash = lhsObject.GetHashCode();
                var rhsHash = rhsObject.GetHashCode();

                if (vm.markerTimeStamps.ContainsKey(lhsHash) && vm.markerTimeStamps.ContainsKey(rhsHash))
                {
                    return(vm.markerTimeStamps[lhsHash].CompareTo(vm.markerTimeStamps[rhsHash]));
                }

                return(0);
            });

            foreach (var current in sortedMarkers)
            {
                // TODO: Take zoom factor into account?
                if (accumulator.Count > 0 && Math.Abs(current.time - accumulator[accumulator.Count - 1].time) > TimeUtility.kTimeEpsilon)
                {
                    ProcessAccumulator(accumulator, parent);
                }

                accumulator.Add(current);
            }

            ProcessAccumulator(accumulator, parent);
        }
        void OnPlayModeStateChanged(PlayModeStateChange playModeState)
        {
            // case 923506 - make sure we save view data before switching modes
            if (playModeState == PlayModeStateChange.ExitingEditMode ||
                playModeState == PlayModeStateChange.ExitingPlayMode)
                TimelineWindowViewPrefs.SaveAll();

            bool isPlaymodeAboutToChange = playModeState == PlayModeStateChange.ExitingEditMode || playModeState == PlayModeStateChange.ExitingPlayMode;

            // Important to stop the graph on any director so temporary objects are properly cleaned up
            if (isPlaymodeAboutToChange && state != null)
                state.Stop();
        }
Esempio n. 11
0
        public static float GetInlineCurveHeight(TrackAsset asset)
        {
            float result;

            if (asset == null)
            {
                result = TrackViewModelData.k_DefaultinlineAnimationCurveHeight;
            }
            else
            {
                result = TimelineWindowViewPrefs.GetTrackViewModelData(asset).inlineAnimationCurveHeight;
            }
            return(result);
        }
        float InlineCurveHeight()
        {
            if (!track.GetShowInlineCurves())
            {
                return(0.0f);
            }

            if (!TimelineUtility.TrackHasAnimationCurves(track))
            {
                return(0.0f);
            }

            return(TimelineWindowViewPrefs.GetInlineCurveHeight(track));
        }
Esempio n. 13
0
        void UpdateViewModel()
        {
            var curveEditor = currentCurveEditor.clipCurveEditor;

            if (curveEditor == null || curveEditor.bindingHierarchy.treeViewController == null)
            {
                return;
            }

            var vm = TimelineWindowViewPrefs.GetTrackViewModelData(m_TrackGUI.track);

            vm.inlineCurvesState = curveEditor.bindingHierarchy.treeViewController.state;
            vm.inlineCurvesShownAreaInsideMargins = curveEditor.shownAreaInsideMargins;
            vm.lastInlineCurveDataID = curveEditor.dataSource.id;
        }
Esempio n. 14
0
        protected override bool MouseDown(Event evt, WindowState state)
        {
            m_Target = PickerUtils.FirstPickedElementOfType <InlineCurveResizeHandle>();
            if (m_Target == null)
            {
                return(false);
            }

            m_Captured         = true;
            m_CapturedHeight   = TimelineWindowViewPrefs.GetInlineCurveHeight(m_Target.trackGUI.track);
            m_CaptureMouseYPos = GUIUtility.GUIToScreenPoint(Event.current.mousePosition).y;
            state.AddCaptured(this);

            return(true);
        }
Esempio n. 15
0
        void OnAfterSequenceChange()
        {
            Repaint();

            m_SequencePath = state.GetCurrentSequencePath();

            m_LastFrameHadSequence = state.editSequence.asset != null;
            TimelineWindowViewPrefs.SaveAll();

            // this prevent clearing the animation window when going in/out of playmode, but
            // clears it when we switch master timelines
            if (m_PreviousMasterSequence != null && m_PreviousMasterSequence != state.masterSequence.asset)
            {
                TimelineAnimationUtilities.UnlinkAnimationWindow();
            }
        }
Esempio n. 16
0
        public float InlineAnimationCurveHeight()
        {
            float result;

            if (!base.track.GetShowInlineCurves())
            {
                result = 0f;
            }
            else if (!TimelineUtility.TrackHasAnimationCurves(base.track))
            {
                result = 0f;
            }
            else
            {
                result = TimelineWindowViewPrefs.GetInlineCurveHeight(base.track);
            }
            return(result);
        }
Esempio n. 17
0
        protected override bool MouseDrag(Event evt, WindowState state)
        {
            if (!m_Captured || m_Target == null)
            {
                return(false);
            }

            var trackGUI = m_Target.trackGUI;

            float inlineTrackHeight = m_CapturedHeight +
                                      (GUIUtility.GUIToScreenPoint(Event.current.mousePosition).y - m_CaptureMouseYPos);

            TimelineWindowViewPrefs.SetInlineCurveHeight(trackGUI.track, Mathf.Max(inlineTrackHeight, 60.0f));

            state.GetWindow().treeView.CalculateRowRects();

            return(true);
        }
        void OnAfterSequenceChange()
        {
            Repaint();

            m_SequencePath = state.GetCurrentSequencePath();

            m_LastFrameHadSequence = state.editSequence.asset != null;
            TimelineWindowViewPrefs.SaveAll();

            // this prevent clearing the animation window when going in/out of playmode, but
            // clears it when we switch master timelines
            // the cast to a object will handle the case where the sequence has been deleted.
            object previousMasterSequence = m_PreviousMasterSequence;
            bool   isDeleted  = previousMasterSequence != null && m_PreviousMasterSequence == null;
            bool   hasChanged = m_PreviousMasterSequence != null && m_PreviousMasterSequence != state.masterSequence.asset;

            if (isDeleted || hasChanged)
            {
                TimelineAnimationUtilities.UnlinkAnimationWindow();
            }
        }
Esempio n. 19
0
        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();
        }
Esempio n. 20
0
 internal static void SetShowInlineCurves(this TrackAsset track, bool inlineOn)
 {
     TimelineWindowViewPrefs.SetShowInlineCurves(track, inlineOn);
 }
Esempio n. 21
0
 internal static bool GetShowInlineCurves(this TrackAsset track)
 {
     return(TimelineWindowViewPrefs.GetShowInlineCurves(track));
 }
Esempio n. 22
0
 internal static void SetShowMarkers(this TrackAsset track, bool collapsed)
 {
     TimelineWindowViewPrefs.SetTrackShowMarkers(track, collapsed);
 }
Esempio n. 23
0
 internal static bool GetShowMarkers(this TrackAsset track)
 {
     return(TimelineWindowViewPrefs.IsShowMarkers(track));
 }
Esempio n. 24
0
 internal static void SetCollapsed(this TrackAsset track, bool collapsed)
 {
     TimelineWindowViewPrefs.SetTrackCollapsed(track, collapsed);
 }
Esempio n. 25
0
 internal static bool GetCollapsed(this TrackAsset track)
 {
     return(TimelineWindowViewPrefs.IsTrackCollapsed(track));
 }
 void OnEditorQuit()
 {
     TimelineWindowViewPrefs.SaveAll();
 }
 /// <summary>
 /// Queries whether the children of the Track are currently visible in the Timeline Editor.
 /// </summary>
 /// <param name="track">The track asset to query.</param>
 /// <returns>True if the track is collapsed and false otherwise.</returns>
 public static bool IsCollapsed(this TrackAsset track)
 {
     return(TimelineWindowViewPrefs.IsTrackCollapsed(track));
 }
Esempio n. 28
0
 public override void Select()
 {
     zOrder = zOrderProvider.Next();
     SelectionManager.Add(marker);
     TimelineWindowViewPrefs.GetTrackViewModelData(parent.asset).markerTimeStamps[m_MarkerHash] = DateTime.UtcNow.Ticks;
 }
 public void Dispose()
 {
     TimelineWindowViewPrefs.SaveViewModel(asset);
 }
Esempio n. 30
0
 float InlineCurveHeight()
 {
     return(track.GetShowInlineCurves() && CanDrawInlineCurve()
         ? TimelineWindowViewPrefs.GetInlineCurveHeight(track)
         : 0.0f);
 }