private float PerformOneIteration(Chain chain, Transform target) { int boneCount = chain.BoneCount; // FORWARD STEP chain.AttachBoneToChildPos(boneCount - 1, target.position, false); int i = boneCount - 2; while (i >= 0) { chain.AttachBoneToChild(i--, false); // TODO: Constraints } //BACKWARD STEP chain.AttachBoneToParentPos(0, chain.OriginalRootPos, false); i = 1; while (i < boneCount) { chain.AttachBoneToParent(i++, false); // TODO: Constraints } return(Vector3.Distance(chain.EndEffector.Position, target.position)); }
private static void BackwardStep(Chain chain, Transform target, int startJoint, Vector3 startJointPos) { chain.AttachBoneToParentPos(startJoint, startJointPos, false); int i = startJoint + 1; while (i < chain.BoneCount) { chain.AttachBoneToParent(i, false); i++; } }