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