AtlasPage GetAtlasPageWithMaterial(AtlasPage originalPage, Material materialTemplate) { if (originalPage == null) { throw new ArgumentNullException("originalPage"); } AtlasPage newPage = null; var key = new KeyValuePair <AtlasPage, Material>(originalPage, materialTemplate); cache.TryGetValue(key, out newPage); if (newPage == null) { newPage = originalPage.Clone(); var originalMaterial = originalPage.rendererObject as Material; newPage.rendererObject = new Material(materialTemplate) { name = originalMaterial.name + " " + materialTemplate.name, mainTexture = originalMaterial.mainTexture }; cache.Add(key, newPage); } return(newPage); }
protected AtlasRegion CloneAtlasRegionWithMaterial(AtlasRegion originalRegion, List <ReplacementMaterial> replacementMaterials) { var newRegion = originalRegion.Clone(); Material material = null; foreach (var replacement in replacementMaterials) { if (replacement.pageName == originalRegion.page.name) { material = replacement.material; break; } } AtlasPage originalPage = originalRegion.page; var newPage = originalPage.Clone(); newPage.rendererObject = material; newRegion.page = newPage; return(newRegion); }