public static string MaterialIntegrate(this ModelModifier modifier) { var sb = new System.Text.StringBuilder(); var materials = new List <Material>(); foreach (var material in modifier.Model.Materials.ToArray()) { var found = materials.FirstOrDefault(x => x.CanIntegrate(material)); if (found != null) { // merge modifier.MaterialReplace(material, found); } else { // add materials.Add(material); } } sb.Append($"MaterialIntegrate: {modifier.Model.Materials.Count} => {materials.Count}"); modifier.Model.Materials.Clear(); modifier.Model.Materials.AddRange(materials); return(sb.ToString()); }