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