Split() public méthode

public Split ( ) : List
Résultat List
Exemple #1
0
        private void ProcessMesh(MeshContent mesh)
        {
            if (MeshSplitter.NeedsSplitting(mesh, maxBones))
            {
                modelModified = true;
                MeshSplitter       splitter = new MeshSplitter(mesh, maxBones);
                List <MeshContent> meshes   = splitter.Split();
                foreach (MeshContent m in meshes)
                {
                    MeshHelper.MergeDuplicatePositions(m, 0);
                    MeshHelper.MergeDuplicateVertices(m);
                    MeshHelper.OptimizeForCache(m);
                }

                MeshContent        firstMesh = meshes[0];
                NodeContent        parent    = mesh.Parent;
                List <NodeContent> children  = new List <NodeContent>();
                foreach (NodeContent child in mesh.Children)
                {
                    children.Add(child);
                }

                foreach (NodeContent child in children)
                {
                    mesh.Children.Remove(child);
                }
                parent.Children.Remove(mesh);

                foreach (MeshContent m in meshes)
                {
                    parent.Children.Add(m);
                }
                foreach (NodeContent child in children)
                {
                    firstMesh.Children.Add(child);
                }
                foreach (NodeContent child in firstMesh.Children)
                {
                    ProcessNode(child);
                }
            }
        }
Exemple #2
0
        private void ProcessMesh(MeshContent mesh)
        {
            if (MeshSplitter.NeedsSplitting(mesh, maxBones))
            {
                modelModified = true;
                MeshSplitter splitter = new MeshSplitter(mesh, maxBones);
                List<MeshContent> meshes = splitter.Split();
                foreach (MeshContent m in meshes)
                {
                    MeshHelper.MergeDuplicatePositions(m, 0);
                    MeshHelper.MergeDuplicateVertices(m);
                    MeshHelper.OptimizeForCache(m);
                }

                MeshContent firstMesh = meshes[0];
                NodeContent parent = mesh.Parent;
                List<NodeContent> children = new List<NodeContent>();
                foreach (NodeContent child in mesh.Children)
                    children.Add(child);

                foreach (NodeContent child in children)
                {
                    mesh.Children.Remove(child);
                }
                parent.Children.Remove(mesh);

                foreach (MeshContent m in meshes)
                {
                    parent.Children.Add(m);
                }
                foreach (NodeContent child in children)
                {
                    firstMesh.Children.Add(child);
                }
                foreach (NodeContent child in firstMesh.Children)
                {
                    ProcessNode(child);
                }
            }
        }