UnityEditor.RagdollBuilder.BuildCapsules C# (CSharp) Method

BuildCapsules() private method

private BuildCapsules ( ) : void
return void
        private void BuildCapsules()
        {
            IEnumerator enumerator = this.bones.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    BoneInfo current = (BoneInfo) enumerator.Current;
                    if (current.colliderType == typeof(CapsuleCollider))
                    {
                        int num;
                        float num2;
                        if (current.children.Count == 1)
                        {
                            BoneInfo info2 = (BoneInfo) current.children[0];
                            Vector3 position = info2.anchor.position;
                            CalculateDirection(current.anchor.InverseTransformPoint(position), out num, out num2);
                        }
                        else
                        {
                            Vector3 vector2 = (current.anchor.position - current.parent.anchor.position) + current.anchor.position;
                            CalculateDirection(current.anchor.InverseTransformPoint(vector2), out num, out num2);
                            if (current.anchor.GetComponentsInChildren(typeof(Transform)).Length > 1)
                            {
                                Bounds bounds = new Bounds();
                                foreach (Transform transform in current.anchor.GetComponentsInChildren(typeof(Transform)))
                                {
                                    bounds.Encapsulate(current.anchor.InverseTransformPoint(transform.position));
                                }
                                if (num2 > 0f)
                                {
                                    num2 = bounds.max[num];
                                }
                                else
                                {
                                    num2 = bounds.min[num];
                                }
                            }
                        }
                        CapsuleCollider collider = current.anchor.gameObject.AddComponent<CapsuleCollider>();
                        collider.direction = num;
                        Vector3 zero = Vector3.zero;
                        zero[num] = num2 * 0.5f;
                        collider.center = zero;
                        collider.height = Mathf.Abs(num2);
                        collider.radius = Mathf.Abs((float) (num2 * current.radiusScale));
                    }
                }
            }
            finally
            {
                IDisposable disposable = enumerator as IDisposable;
                if (disposable != null)
                {
                    disposable.Dispose();
                }
            }
        }