74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using System.Linq; | ||
|  | using UnityEditor; | ||
|  | using UnityEngine; | ||
|  | using UnityEngine.Playables; | ||
|  | using UnityEngine.Timeline; | ||
|  | 
 | ||
|  | namespace UnityEditor.Timeline | ||
|  | { | ||
|  |     static class FrameRateDisplayUtility | ||
|  |     { | ||
|  |         private static string[] s_FrameRateLabels; | ||
|  |         public static bool GetStandardFromFrameRate(double frameRate, out StandardFrameRates standard) | ||
|  |         { | ||
|  |             FrameRate frameRateObj = TimeUtility.GetClosestFrameRate(RoundFrameRate(frameRate)); | ||
|  |             return TimeUtility.ToStandardFrameRate(frameRateObj, out standard); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static double RoundFrameRate(double frameRate) | ||
|  |         { | ||
|  |             double trunc = Math.Truncate(frameRate * (1 / TimeUtility.kFrameRateRounding)) * TimeUtility.kFrameRateRounding; | ||
|  |             return Math.Min(Math.Max(TimelineAsset.EditorSettings.kMinFrameRate, trunc), | ||
|  |                 TimelineAsset.EditorSettings.kMaxFrameRate); | ||
|  |         } | ||
|  | 
 | ||
|  |         public static string[] GetDefaultFrameRatesLabels(StandardFrameRates option) | ||
|  |         { | ||
|  |             string[] labels; | ||
|  |             if (s_FrameRateLabels == null || !s_FrameRateLabels.Any()) | ||
|  |             { | ||
|  |                 var frameRates = (StandardFrameRates[])Enum.GetValues(typeof(StandardFrameRates)); | ||
|  |                 labels = Array.ConvertAll(frameRates, GetLabelForStandardFrameRate); | ||
|  |                 s_FrameRateLabels = labels; | ||
|  |             } | ||
|  |             else | ||
|  |             { | ||
|  |                 labels = s_FrameRateLabels; | ||
|  |             } | ||
|  | 
 | ||
|  |             if (!Enum.IsDefined(typeof(StandardFrameRates), option)) | ||
|  |             { | ||
|  |                 Array.Resize(ref labels, (int)option + 1); | ||
|  |                 labels[(int)option] = GetLabelForStandardFrameRate(option); | ||
|  |             } | ||
|  |             return labels; | ||
|  |         } | ||
|  | 
 | ||
|  |         static string GetLabelForStandardFrameRate(StandardFrameRates option) | ||
|  |         { | ||
|  |             switch (option) | ||
|  |             { | ||
|  |                 case StandardFrameRates.Fps23_97: | ||
|  |                     return L10n.Tr("Film NTSC: 23.97 fps"); | ||
|  |                 case StandardFrameRates.Fps24: | ||
|  |                     return L10n.Tr("Film: 24 fps"); | ||
|  |                 case StandardFrameRates.Fps25: | ||
|  |                     return L10n.Tr("PAL: 25 fps"); | ||
|  |                 case StandardFrameRates.Fps29_97: | ||
|  |                     return L10n.Tr("NTSC: 29.97 fps"); | ||
|  |                 case StandardFrameRates.Fps30: | ||
|  |                     return L10n.Tr("HD: 30 fps"); | ||
|  |                 case StandardFrameRates.Fps50: | ||
|  |                     return L10n.Tr("Interlaced PAL: 50 fps"); | ||
|  |                 case StandardFrameRates.Fps59_94: | ||
|  |                     return L10n.Tr("Interlaced NTSC: 59.94 fps"); | ||
|  |                 case StandardFrameRates.Fps60: | ||
|  |                     return L10n.Tr("Game: 60 fps"); | ||
|  |                 default: | ||
|  |                     return L10n.Tr("Custom"); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |