From c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 19 Apr 2020 17:19:32 -0400 Subject: Inital commit --- .../Editor/Window/TimelineWindow_PlayRange.cs | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PlayRange.cs (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PlayRange.cs') diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PlayRange.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PlayRange.cs new file mode 100644 index 0000000..99a1ab6 --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Window/TimelineWindow_PlayRange.cs @@ -0,0 +1,131 @@ +using System.Linq; +using UnityEngine; + +namespace UnityEditor.Timeline +{ + partial class TimelineWindow + { + TimeAreaItem m_PlayRangeEnd; + TimeAreaItem m_PlayRangeStart; + + void PlayRangeGUI(TimelineItemArea area) + { + if (!currentMode.ShouldShowPlayRange(state) || treeView == null) + return; + + if (state.masterSequence.asset != null && !state.masterSequence.asset.GetRootTracks().Any()) + return; + + // left Time Cursor + if (m_PlayRangeStart == null || m_PlayRangeStart.style != styles.playTimeRangeStart) + { + m_PlayRangeStart = new TimeAreaItem(styles.playTimeRangeStart, OnTrackHeadMinSelectDrag); + Vector2 offset = new Vector2(-2.0f, 0); + m_PlayRangeStart.boundOffset = offset; + } + + // right Time Cursor + if (m_PlayRangeEnd == null || m_PlayRangeEnd.style != styles.playTimeRangeEnd) + { + m_PlayRangeEnd = new TimeAreaItem(styles.playTimeRangeEnd, OnTrackHeadMaxSelectDrag); + Vector2 offset = new Vector2(2.0f, 0); + m_PlayRangeEnd.boundOffset = offset; + } + + if (area == TimelineItemArea.Header) + DrawPlayRange(true, false); + else if (area == TimelineItemArea.Lines) + DrawPlayRange(false, true); + } + + void DrawPlayRange(bool drawHeads, bool drawLines) + { + Rect timeCursorRect = state.timeAreaRect; + timeCursorRect.height = clientArea.height; + + m_PlayRangeEnd.HandleManipulatorsEvents(state); + m_PlayRangeStart.HandleManipulatorsEvents(state); + + // The first time a user enable the play range, we put the play range 75% around the current time... + if (state.playRange == TimelineAssetViewModel.NoPlayRangeSet) + { + float minimumPlayRangeTime = 0.01f; + float t0 = Mathf.Max(0.0f, state.PixelToTime(state.timeAreaRect.xMin)); + float t1 = Mathf.Min((float)state.masterSequence.duration, state.PixelToTime(state.timeAreaRect.xMax)); + + if (Mathf.Abs(t1 - t0) <= minimumPlayRangeTime) + { + state.playRange = new Vector2(t0, t1); + return; + } + + float deltaT = (t1 - t0) * 0.25f / 2.0f; + + t0 += deltaT; + t1 -= deltaT; + + if (t1 < t0) + { + float temp = t0; + t0 = t1; + t1 = temp; + } + + if (Mathf.Abs(t1 - t0) < minimumPlayRangeTime) + { + if (t0 - minimumPlayRangeTime > 0.0f) + t0 -= minimumPlayRangeTime; + else if (t1 + minimumPlayRangeTime < state.masterSequence.duration) + t1 += minimumPlayRangeTime; + } + + state.playRange = new Vector2(t0, t1); + } + + // Draw the head or the lines according to the parameters.. + m_PlayRangeStart.drawHead = drawHeads; + m_PlayRangeStart.drawLine = drawLines; + + m_PlayRangeEnd.drawHead = drawHeads; + m_PlayRangeEnd.drawLine = drawLines; + + var playRangeTime = state.playRange; + m_PlayRangeStart.Draw(sequenceContentRect, state, playRangeTime.x); + m_PlayRangeEnd.Draw(sequenceContentRect, state, playRangeTime.y); + + // Draw Time Range Box from Start to End... + if (state.playRangeEnabled && m_PlayHead != null) + { + Rect rect = + Rect.MinMaxRect( + Mathf.Clamp(state.TimeToPixel(playRangeTime.x), state.timeAreaRect.xMin, state.timeAreaRect.xMax), + m_PlayHead.bounds.yMax, + Mathf.Clamp(state.TimeToPixel(playRangeTime.y), state.timeAreaRect.xMin, state.timeAreaRect.xMax), + sequenceContentRect.height + state.timeAreaRect.height + timeCursorRect.y + ); + + + EditorGUI.DrawRect(rect, DirectorStyles.Instance.customSkin.colorRange); + + rect.height = 3f; + EditorGUI.DrawRect(rect, Color.white); + } + } + + void OnTrackHeadMinSelectDrag(double newTime) + { + Vector2 range = state.playRange; + range.x = (float)newTime; + state.playRange = range; + m_PlayRangeStart.showTooltip = true; + } + + void OnTrackHeadMaxSelectDrag(double newTime) + { + Vector2 range = state.playRange; + range.y = (float)newTime; + state.playRange = range; + m_PlayRangeEnd.showTooltip = true; + } + } +} -- cgit v1.2.3