namespace Fusion.Addons.AnimationController { public unsafe interface IAnimationClipIDProvider { int ClipID { get; set; } int InterpolatedClipID { get; set; } } public unsafe sealed class AnimationClipIDProvider : AnimationPropertyProvider { // 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(interpolationInfo.Offset) : interpolationInfo.ToBuffer.ReinterpretState(interpolationInfo.Offset); ++interpolationInfo.Offset; } } }