2025-09-24 11:24:38 +05:00

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