35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using UnityEngine; | ||
|  | 
 | ||
|  | namespace UnityEditor.Timeline | ||
|  | { | ||
|  |     static class AnimationClipExtensions | ||
|  |     { | ||
|  |         public static UInt64 ClipVersion(this AnimationClip clip) | ||
|  |         { | ||
|  |             if (clip == null) | ||
|  |                 return 0; | ||
|  | 
 | ||
|  |             var info = AnimationClipCurveCache.Instance.GetCurveInfo(clip); | ||
|  |             var version = (UInt32)info.version; | ||
|  |             var count = (UInt32)info.curves.Length; | ||
|  |             var result = (UInt64)version; | ||
|  |             result |= ((UInt64)count) << 32; | ||
|  |             return result; | ||
|  |         } | ||
|  | 
 | ||
|  |         public static CurveChangeType GetChangeType(this AnimationClip clip, ref UInt64 curveVersion) | ||
|  |         { | ||
|  |             var version = clip.ClipVersion(); | ||
|  |             var changeType = CurveChangeType.None; | ||
|  |             if ((curveVersion >> 32) != (version >> 32)) | ||
|  |                 changeType = CurveChangeType.CurveAddedOrRemoved; | ||
|  |             else if (curveVersion != version) | ||
|  |                 changeType = CurveChangeType.CurveModified; | ||
|  | 
 | ||
|  |             curveVersion = version; | ||
|  |             return changeType; | ||
|  |         } | ||
|  |     } | ||
|  | } |