public BodyIK( FullBodyIK fullBodyIK, LimbIK[] limbIK )
{
Assert( fullBodyIK != null );
_limbIK = limbIK;
_settings = fullBodyIK.settings;
_internalValues = fullBodyIK.internalValues;
_hipsBone = _PrepareBone( fullBodyIK.bodyBones.hips );
_neckBone = _PrepareBone( fullBodyIK.headBones.neck );
_headBone = _PrepareBone( fullBodyIK.headBones.head );
_hipsEffector = fullBodyIK.bodyEffectors.hips;
_neckEffector = fullBodyIK.headEffectors.neck;
_headEffector = fullBodyIK.headEffectors.head;
_eyesEffector = fullBodyIK.headEffectors.eyes;
_armEffectors[0] = fullBodyIK.leftArmEffectors.arm;
_armEffectors[1] = fullBodyIK.rightArmEffectors.arm;
_elbowEffectors[0] = fullBodyIK.leftArmEffectors.elbow;
_elbowEffectors[1] = fullBodyIK.rightArmEffectors.elbow;
_wristEffectors[0] = fullBodyIK.leftArmEffectors.wrist;
_wristEffectors[1] = fullBodyIK.rightArmEffectors.wrist;
_kneeEffectors[0] = fullBodyIK.leftLegEffectors.knee;
_kneeEffectors[1] = fullBodyIK.rightLegEffectors.knee;
_footEffectors[0] = fullBodyIK.leftLegEffectors.foot;
_footEffectors[1] = fullBodyIK.rightLegEffectors.foot;
_spineBones = _PrepareSpineBones( fullBodyIK.bones );
if( _spineBones != null && _spineBones.Length > 0 ) {
int spineLength = _spineBones.Length;
_spineBone = _spineBones[0];
_spineUBone = _spineBones[spineLength - 1];
_spineEnabled = new bool[spineLength];
}
// Memo: These should be pair bones.(Necessary each side bones.)
_kneeBones = _PrepareBones( fullBodyIK.leftLegBones.knee, fullBodyIK.rightLegBones.knee );
_elbowBones = _PrepareBones( fullBodyIK.leftArmBones.elbow, fullBodyIK.rightArmBones.elbow );
_legBones = _PrepareBones( fullBodyIK.leftLegBones.leg, fullBodyIK.rightLegBones.leg );
_armBones = _PrepareBones( fullBodyIK.leftArmBones.arm, fullBodyIK.rightArmBones.arm );
_shoulderBones = _PrepareBones( fullBodyIK.leftArmBones.shoulder, fullBodyIK.rightArmBones.shoulder );
_nearArmBones = (_shoulderBones != null) ? _shoulderBones : _nearArmBones;
_Prepare( fullBodyIK );
}