public override NewBlendableTransform GetBlendableTransformOnFrame(int hkxBoneIndex, float frame) { var frameRatio = frame % 1; frame = frame % FrameCount; if (frameRatio != 0) { var blendFrom = Frames[(int)Math.Floor(frame)].BoneTransforms[hkxBoneIndex]; var blendTo = Frames[(int)Math.Ceiling(frame)].BoneTransforms[hkxBoneIndex]; return(NewBlendableTransform.Lerp(blendFrom, blendTo, frameRatio)); } else { return(Frames[(int)frame].BoneTransforms[hkxBoneIndex]); } }
public override NewBlendableTransform GetTransformOnFrame(int transformTrackIndex, float frame, bool enableLooping) { var frameRatio = frame % 1; if (enableLooping) { frame = frame % FrameCount; } else { frame = Math.Min(frame, FrameCount); } if (frameRatio != 0) { var blendFrom = Frames[(int)Math.Floor(frame)].BoneTransforms[transformTrackIndex]; var blendTo = Frames[(int)Math.Ceiling(frame)].BoneTransforms[transformTrackIndex]; return(NewBlendableTransform.Lerp(blendFrom, blendTo, frameRatio)); } else { return(Frames[(int)frame].BoneTransforms[transformTrackIndex]); } }