Beispiel #1
0
        /*! \cond PRIVATE */

        void createMeshes(ref List <CGVMesh> vMeshes, bool combine)
        {
            int exceededVertexCount = 0;

            if (combine)
            {
                sortByVertexCount(ref vMeshes);
                // Skip meshes that exceeds Vertex limits
                while (vMeshes[exceededVertexCount].Count > 65534)
                {
                    exceededVertexCount++;
                }

                CGVMesh curVMesh = (vMeshes.Count == 1) ? vMeshes[0] : new CGVMesh(vMeshes[0]);         // Just one mesh? No need to create a copy! Otherwise, take a copy!
                for (int vm = exceededVertexCount + 1; vm < vMeshes.Count; vm++)
                {
                    if (curVMesh.Count + vMeshes[vm].Count > 65534)
                    {                                                                                 // write curVMesh
                        writeVMeshToMesh(ref curVMesh);
                        curVMesh = (vm < vMeshes.Count - 1) ? vMeshes[vm] : new CGVMesh(vMeshes[vm]); // just one mesh left? No need to create a copy! Otherwise, take a copy!
                    }
                    else                                                                              // Add new vMesh to curVMesh
                    {
                        curVMesh.MergeVMesh(vMeshes[vm]);
                    }
                }
                writeVMeshToMesh(ref curVMesh);
            }
            else
            {
                for (int vm = 0; vm < vMeshes.Count; vm++)
                {
                    if (vMeshes[vm].Count < 65535)
                    {
                        CGVMesh vmesh = vMeshes[vm];
                        writeVMeshToMesh(ref vmesh);
                    }
                    else
                    {
                        exceededVertexCount++;
                    }
                }
            }
            if (exceededVertexCount > 0)
            {
                UIMessages.Add(string.Format("{0} meshes skipped (VertexCount>65534)", exceededVertexCount));
            }
        }