Example #1
0
        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;
        }