31 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			31 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | #if !TIMELINE_FRAMEACCURATE | ||
|  | using System; | ||
|  | 
 | ||
|  | namespace UnityEngine.Timeline | ||
|  | { | ||
|  |     internal readonly struct FrameRate : IEquatable<FrameRate> | ||
|  |     { | ||
|  |         public readonly double rate; | ||
|  | 
 | ||
|  |         public static readonly FrameRate k_23_976Fps = new FrameRate(23.976023976024); | ||
|  |         public static readonly FrameRate k_24Fps = new FrameRate(24); | ||
|  |         public static readonly FrameRate k_25Fps = new FrameRate(25); | ||
|  |         public static readonly FrameRate k_30Fps = new FrameRate(30); | ||
|  |         public static readonly FrameRate k_29_97Fps = new FrameRate(29.97002997003); | ||
|  |         public static readonly FrameRate k_50Fps = new FrameRate(50); | ||
|  |         public static readonly FrameRate k_59_94Fps = new FrameRate(59.9400599400599); | ||
|  |         public static readonly FrameRate k_60Fps = new FrameRate(60); | ||
|  | 
 | ||
|  |         FrameRate(double framerate) { rate = framerate; } | ||
|  |         public bool IsValid() => rate > TimeUtility.kTimeEpsilon; | ||
|  |         public bool Equals(FrameRate other) => Math.Abs(rate - other.rate) < TimeUtility.kFrameRateEpsilon; | ||
|  |         public override bool Equals(object obj) => obj is FrameRate other && Equals(other); | ||
|  |         public override int GetHashCode() => rate.GetHashCode(); | ||
|  |         public static bool operator ==(FrameRate a, FrameRate b) => a.Equals(b); | ||
|  |         public static bool operator !=(FrameRate a, FrameRate b) => !a.Equals(b); | ||
|  | 
 | ||
|  |         public static FrameRate DoubleToFrameRate(double rate) => new FrameRate(Math.Ceiling(rate) - rate < TimeUtility.kFrameRateEpsilon ? rate : Math.Ceiling(rate) * 1000.0 / 1001.0); | ||
|  |     } | ||
|  | } | ||
|  | #endif |