/// <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); } } }
/// <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); }