SW 중심대학 OSS GIT 서버
박건태, 이승준, 고기완, 이준호
새로운 배포
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using UnityEngine;
namespace UnityEditor.Timeline{ class TimeAreaAutoPanner { readonly WindowState m_State; readonly TimelineWindow m_Window; readonly Rect m_ViewRect;
const float k_PixelDistanceToMaxSpeed = 100.0f; const float k_MaxPanSpeed = 30.0f;
public TimeAreaAutoPanner(WindowState state) { m_State = state; m_Window = m_State.GetWindow();
var shownRange = m_State.timeAreaShownRange; var trackViewBounds = m_Window.sequenceRect; m_ViewRect = Rect.MinMaxRect(m_State.TimeToPixel(shownRange.x), trackViewBounds.yMin, m_State.TimeToPixel(shownRange.y), trackViewBounds.yMax); }
public void OnGUI(Event evt) { if (evt.type != EventType.Layout) return;
var hFactor = 0.0f; var vFactor = 0.0f;
bool horizontalPan = GetPanFactor(evt.mousePosition.x, m_ViewRect.xMin, m_ViewRect.xMax, out hFactor); bool verticalPan = GetPanFactor(evt.mousePosition.y, m_ViewRect.yMin, m_ViewRect.yMax, out vFactor);
if (horizontalPan) { var translation = m_State.timeAreaTranslation; translation.x += hFactor * k_MaxPanSpeed;
m_State.SetTimeAreaTransform(translation, m_State.timeAreaScale); }
if (verticalPan) { var translation = m_Window.treeView.scrollPosition; translation.y -= vFactor * k_MaxPanSpeed;
m_Window.treeView.scrollPosition = translation; } }
static bool GetPanFactor(float v, float min, float max, out float factor) { factor = 0.0f;
if (v < min) { factor = Mathf.Clamp01((min - v) / k_PixelDistanceToMaxSpeed); return true; }
if (v > max) { factor = -Mathf.Clamp01((v - max) / k_PixelDistanceToMaxSpeed); return true; }
return false; } }}
|