public void SetupAnimationForLinearInterpolation(FullWrist wrist, int startPosition, int endPosition, int startFixedBoneIndex, int endFixedBoneIndex, int numSteps) { Bone startFixedBone = wrist.Bones[startFixedBoneIndex]; Bone endFixedBone = wrist.Bones[endFixedBoneIndex]; if (!startFixedBone.IsValidBone || !endFixedBone.IsValidBone) { throw new ArgumentException("Cannot set fixed bone to a non-valid bone"); } _boneTransforms = new TransformMatrix[WristFilesystem.NumBones][]; for (int i = 0; i < WristFilesystem.NumBones; i++) { if (!wrist.Bones[i].IsValidBone) { continue; } Bone bone = wrist.Bones[i]; _boneTransforms[i] = bone.CalculateInterpolatedMotion(startPosition, endPosition, startFixedBone, endFixedBone, numSteps); } _fullWrist = wrist; _numberOfFrames = numSteps; _endPositionIndex = endPosition; _endFixedBoneIndex = endFixedBoneIndex; }