37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
|
namespace Fusion.Addons.AnimationController
|
||
|
{
|
||
|
public unsafe interface IAnimationClipIDProvider
|
||
|
{
|
||
|
int ClipID { get; set; }
|
||
|
int InterpolatedClipID { get; set; }
|
||
|
}
|
||
|
|
||
|
public unsafe sealed class AnimationClipIDProvider : AnimationPropertyProvider<IAnimationClipIDProvider>
|
||
|
{
|
||
|
// AnimationPropertyProvider INTERFACE
|
||
|
|
||
|
protected override int GetWordCount(IAnimationClipIDProvider item)
|
||
|
{
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
protected override void Read(IAnimationClipIDProvider item, AnimationReadWriteInfo readWriteInfo)
|
||
|
{
|
||
|
item.ClipID = *readWriteInfo.Ptr;
|
||
|
++readWriteInfo.Ptr;
|
||
|
}
|
||
|
|
||
|
protected override void Write(IAnimationClipIDProvider item, AnimationReadWriteInfo readWriteInfo)
|
||
|
{
|
||
|
*readWriteInfo.Ptr = item.ClipID;
|
||
|
++readWriteInfo.Ptr;
|
||
|
}
|
||
|
|
||
|
protected override void Interpolate(IAnimationClipIDProvider item, ref AnimationInterpolationInfo interpolationInfo)
|
||
|
{
|
||
|
item.InterpolatedClipID = interpolationInfo.Alpha < 0.5f ? interpolationInfo.FromBuffer.ReinterpretState<int>(interpolationInfo.Offset) : interpolationInfo.ToBuffer.ReinterpretState<int>(interpolationInfo.Offset);
|
||
|
++interpolationInfo.Offset;
|
||
|
}
|
||
|
}
|
||
|
}
|