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;
 | |
|         }
 | |
|     }
 | |
| }
 |