| using System; |
| using UnityEngine; |
|
|
| namespace UnityEditor.Timeline |
| { |
| partial class TimelineWindow |
| { |
| [NonSerialized] TimelineTimeArea m_TimeArea; |
| public TimeArea timeArea { get { return m_TimeArea; } } |
|
|
| internal static class Styles |
| { |
| public static string DurationModeText = L10n.Tr("Duration Mode/{0}"); |
| } |
|
|
| double m_LastFrameRate; |
| bool m_TimeAreaDirty = true; |
|
|
| void InitializeTimeArea() |
| { |
| if (m_TimeArea == null) |
| { |
| m_TimeArea = new TimelineTimeArea(state, false) |
| { |
| hRangeLocked = false, |
| vRangeLocked = true, |
| margin = 10, |
| scaleWithWindow = true, |
| hSlider = true, |
| vSlider = false, |
| hBaseRangeMin = 0.0f, |
| hBaseRangeMax = WindowState.kMaxShownTime, |
| hRangeMin = 0.0f, |
| hScaleMax = WindowConstants.maxTimeAreaScaling, |
| rect = state.timeAreaRect |
| }; |
|
|
| m_TimeAreaDirty = true; |
| InitTimeAreaFrameRate(); |
| SyncTimeAreaShownRange(); |
| } |
| } |
|
|
| void DrawTimelineRuler() |
| { |
| if (!currentMode.ShouldShowTimeArea(state)) |
| return; |
|
|
| Rect rect = state.timeAreaRect; |
| m_TimeArea.rect = new Rect(rect.x, rect.y, rect.width, clientArea.height - rect.y); |
|
|
| if (m_LastFrameRate != state.referenceSequence.frameRate) |
| InitTimeAreaFrameRate(); |
|
|
| SyncTimeAreaShownRange(); |
|
|
| m_TimeArea.BeginViewGUI(); |
| m_TimeArea.TimeRuler(rect, (float)state.referenceSequence.frameRate, true, false, 1.0f, state.timeFormat.ToTimeAreaFormat()); |
| m_TimeArea.EndViewGUI(); |
| } |
|
|
| void InitTimeAreaFrameRate() |
| { |
| m_LastFrameRate = state.referenceSequence.frameRate; |
| m_TimeArea.hTicks.SetTickModulosForFrameRate((float)m_LastFrameRate); |
| } |
|
|
| void SyncTimeAreaShownRange() |
| { |
| var range = state.timeAreaShownRange; |
| if (!Mathf.Approximately(range.x, m_TimeArea.shownArea.x) || !Mathf.Approximately(range.y, m_TimeArea.shownArea.xMax)) |
| { |
| |
| if (m_TimeAreaDirty) |
| { |
| m_TimeArea.SetShownHRange(range.x, range.y); |
| m_TimeAreaDirty = false; |
| } |
| else |
| { |
| |
| state.TimeAreaChanged(); |
| } |
| } |
|
|
| m_TimeArea.hBaseRangeMax = (float)state.editSequence.duration; |
| } |
|
|
| class TimelineTimeArea : TimeArea |
| { |
| readonly WindowState m_State; |
|
|
| public TimelineTimeArea(WindowState state, bool minimalGUI) : base(minimalGUI) |
| { |
| m_State = state; |
| } |
|
|
| public override string FormatTickTime(float time, float frameRate, TimeFormat timeFormat) |
| { |
| time = m_State.timeReferenceMode == TimeReferenceMode.Global ? |
| (float)m_State.editSequence.ToGlobalTime(time) : time; |
|
|
| return FormatTime(time, frameRate, timeFormat); |
| } |
| } |
| } |
| } |
|
|