protected virtual void ApplyOffsets(vWeaponIKAdjust weaponIKAdjust, vIKSolver weaponHand, vIKSolver supportHand) { bool isValid = weaponIKAdjust != null; weaponHand.SetIKWeight(weaponIKWeight); IKAdjust ikAdjust = isValid ? weaponIKAdjust.GetIKAdjust(isAiming, isCrouching) : null; //Apply Offset to Weapon Arm ApplyOffsetToTargetBone(isValid ? ikAdjust.weaponHandOffset : null, weaponHand.endBoneOffset, isValid); ApplyOffsetToTargetBone(isValid ? ikAdjust.weaponHintOffset : null, weaponHand.middleBoneOffset, isValid); //Apply offset to Support Weapon Arm ApplyOffsetToTargetBone(isValid ? ikAdjust.supportHandOffset : null, supportHand.endBoneOffset, isValid); ApplyOffsetToTargetBone(isValid ? ikAdjust.supportHintOffset : null, supportHand.middleBoneOffset, isValid); //Convert Animatorion To IK with offsets applied if (isValid) { weaponHand.AnimationToIK(); } }