63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using UnityEngine;
|
|
using UnityEngine.Timeline;
|
|
|
|
namespace UnityEditor.Timeline
|
|
{
|
|
static class TimeReferenceUtility
|
|
{
|
|
static WindowState state { get { return TimelineWindow.instance.state; } }
|
|
|
|
public static float PixelToTime(Vector2 mousePos)
|
|
{
|
|
return PixelToTime(mousePos.x);
|
|
}
|
|
|
|
public static float PixelToTime(float pixelX)
|
|
{
|
|
return state.PixelToTime(pixelX);
|
|
}
|
|
|
|
public static double GetSnappedTimeAtMousePosition(Vector2 mousePos)
|
|
{
|
|
return state.GetSnappedTimeAtMousePosition(mousePos);
|
|
}
|
|
|
|
public static double SnapToFrameIfRequired(double currentTime)
|
|
{
|
|
return TimelinePreferences.instance.snapToFrame ? SnapToFrame(currentTime) : currentTime;
|
|
}
|
|
|
|
public static double SnapToFrame(double time)
|
|
{
|
|
if (state.timeReferenceMode == TimeReferenceMode.Global)
|
|
{
|
|
time = state.editSequence.ToGlobalTime(time);
|
|
time = TimeUtility.RoundToFrame(time, state.referenceSequence.frameRate);
|
|
return state.editSequence.ToLocalTime(time);
|
|
}
|
|
|
|
return TimeUtility.RoundToFrame(time, state.referenceSequence.frameRate);
|
|
}
|
|
|
|
public static string ToTimeString(double time, string format = "F2")
|
|
{
|
|
if (state.timeReferenceMode == TimeReferenceMode.Global)
|
|
time = state.editSequence.ToGlobalTime(time);
|
|
|
|
return state.timeFormat.ToTimeString(time, state.referenceSequence.frameRate, format);
|
|
}
|
|
|
|
public static double FromTimeString(string timeString)
|
|
{
|
|
double newTime = state.timeFormat.FromTimeString(timeString, state.referenceSequence.frameRate, -1);
|
|
if (newTime >= 0.0)
|
|
{
|
|
return state.timeReferenceMode == TimeReferenceMode.Global ?
|
|
state.editSequence.ToLocalTime(newTime) : newTime;
|
|
}
|
|
|
|
return state.editSequence.time;
|
|
}
|
|
}
|
|
}
|