Пример #1
0
 /// <summary>
 /// Optimizes the submesh content list
 /// </summary>
 /// <param name="newDict">New geometry dictionary</param>
 /// <param name="mesh">Mesh name</param>
 /// <param name="material">Material name</param>
 /// <param name="meshList">Mesh list to optimize</param>
 private void OptimizeSubmeshContent(GeometryDictionary newDict, string mesh, string material, IEnumerable <SubMeshContent> meshList)
 {
     if (SubMeshContent.OptimizeMeshes(meshList, out var gmesh))
     {
         //Mesh grouped
         newDict.Add(mesh, material, gmesh);
     }
     else
     {
         //Cannot group
         foreach (var m in meshList)
         {
             newDict.Add(mesh, material, m);
         }
     }
 }
Пример #2
0
        /// <summary>
        /// Computes the specified source mesh
        /// </summary>
        /// <param name="newDict">New geometry dictionary</param>
        /// <param name="sourceMesh">Source mesh name</param>
        /// <param name="targetMesh">Target mesh name</param>
        /// <param name="material">Material name</param>
        /// <returns>Returns a submesh content if source mesh isn't a volume</returns>
        private SubMeshContent ComputeSubmeshContent(GeometryDictionary newDict, string sourceMesh, string targetMesh, string material)
        {
            if (!this.Geometry.ContainsKey(sourceMesh))
            {
                return(null);
            }

            var dict = this.Geometry[sourceMesh];

            if (dict.ContainsKey(material))
            {
                if (dict[material].IsVolume)
                {
                    //Group into new dictionary
                    newDict.Add(targetMesh, material, dict[material]);
                }
                else
                {
                    //Return the submesh content
                    return(dict[material]);
                }
            }

            return(null);
        }