FlattenTransforms() static private method

Bakes unwanted transforms into the model geometry, so everything ends up in the same coordinate system.
static private FlattenTransforms ( NodeContent node, BoneContent skeleton ) : void
node NodeContent
skeleton BoneContent
return void
        private static void FlattenTransforms(NodeContent node, BoneContent skeleton)
        {
            bool flag;
            IEnumerator <NodeContent> enumerator = node.Children.GetEnumerator();

            try {
                while (true)
                {
                    flag = enumerator.MoveNext();
                    if (!flag)
                    {
                        break;
                    }
                    NodeContent current = enumerator.Current;
                    flag = current != skeleton;
                    if (flag)
                    {
                        MeshHelper.TransformScene(current, current.Transform);
                        current.Transform = Matrix.Identity;
                        SkinnedModelProcessor.FlattenTransforms(current, skeleton);
                    }
                }
            } finally {
                flag = enumerator == null;
                if (!flag)
                {
                    enumerator.Dispose();
                }
            }
        }
        public override ModelContent Process(NodeContent input, ContentProcessorContext context)
        {
            SkinnedModelProcessor.ValidateMesh(input, context, null);
            BoneContent boneContent = MeshHelper.FindSkeleton(input);
            bool        count       = boneContent != null;

            if (count)
            {
                SkinnedModelProcessor.FlattenTransforms(input, boneContent);
                IList <BoneContent> boneContents = MeshHelper.FlattenSkeleton(boneContent);
                count = boneContents.Count <= 59;
                if (count)
                {
                    List <Matrix>             matrices   = new List <Matrix>();
                    List <Matrix>             matrices1  = new List <Matrix>();
                    List <int>                nums       = new List <int>();
                    IEnumerator <BoneContent> enumerator = boneContents.GetEnumerator();
                    try {
                        while (true)
                        {
                            count = enumerator.MoveNext();
                            if (!count)
                            {
                                break;
                            }
                            BoneContent current = enumerator.Current;
                            matrices.Add(current.Transform);
                            matrices1.Add(Matrix.Invert(current.AbsoluteTransform));
                            nums.Add(boneContents.IndexOf(current.Parent as BoneContent));
                        }
                    } finally {
                        count = enumerator == null;
                        if (!count)
                        {
                            enumerator.Dispose();
                        }
                    }
                    Dictionary <string, AnimationClip> strs = SkinnedModelProcessor.ProcessAnimations(boneContent.Animations, boneContents);
                    ModelContent modelContent = base.Process(input, context);
                    modelContent.Tag = new SkinningData(strs, matrices, matrices1, nums);
                    ModelContent modelContent1 = modelContent;
                    return(modelContent1);
                }
                else
                {
                    throw new InvalidContentException(string.Format("Skeleton has {0} bones, but the maximum supported is {1}.", boneContents.Count, 59));
                }
            }
            else
            {
                throw new InvalidContentException("Input skeleton not found.");
            }
        }