summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/TimeReferenceUtility.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/TimeReferenceUtility.cs')
-rw-r--r--Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/TimeReferenceUtility.cs57
1 files changed, 57 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/TimeReferenceUtility.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/TimeReferenceUtility.cs
new file mode 100644
index 0000000..4e456f8
--- /dev/null
+++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/TimeReferenceUtility.cs
@@ -0,0 +1,57 @@
+using UnityEngine.Timeline;
+
+namespace UnityEditor.Timeline
+{
+ static class TimeReferenceUtility
+ {
+ static WindowState state { get { return TimelineWindow.instance.state; } }
+
+ 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.editSequence.viewModel.timeInFrames ?
+ TimeUtility.TimeAsFrames(time, state.referenceSequence.frameRate, format) :
+ TimeUtility.TimeAsTimeCode(time, state.referenceSequence.frameRate, format);
+ }
+
+ public static double FromTimeString(string timeString)
+ {
+ double newTime;
+
+ if (state.timeInFrames)
+ {
+ double newFrameDouble;
+ if (double.TryParse(timeString, out newFrameDouble))
+ newTime = TimeUtility.FromFrames(newFrameDouble, state.referenceSequence.frameRate);
+ else
+ newTime = state.editSequence.time;
+ }
+ else
+ {
+ newTime = TimeUtility.ParseTimeCode(timeString, state.referenceSequence.frameRate, -1);
+ }
+
+ if (newTime >= 0.0)
+ {
+ return state.timeReferenceMode == TimeReferenceMode.Global ?
+ state.editSequence.ToLocalTime(newTime) : newTime;
+ }
+
+ return state.editSequence.time;
+ }
+ }
+}