public override void UpdateUMAMesh(bool updatedAtlas, UMAData umaData, string[] textureNameList, int atlasResolution) { this.umaData = umaData; this.textureNameList = textureNameList; this.atlasResolution = atlasResolution; combinedMeshList = new List <SkinnedMeshCombiner.CombineInstance>(); combinedMaterialList = new List <Material>(); if (updatedAtlas) { CombineByShader(); } else { CombineByMaterial(); } if (umaData.firstBake) { umaData.myRenderer.sharedMesh = new Mesh(); } else { umaData.cleanMesh(false); } var boneMap = new Dictionary <Transform, Transform>(); SkinnedMeshCombiner.CombineMeshes(umaData.myRenderer, combinedMeshList.ToArray(), boneMap); if (updatedAtlas) { RecalculateUV(); } umaData.umaRecipe.ClearDNAConverters(); for (int i = 0; i < umaData.umaRecipe.slotDataList.Length; i++) { SlotData slotData = umaData.umaRecipe.slotDataList[i]; if (slotData != null) { umaData.EnsureBoneData(slotData.umaBoneData, slotData.animatedBones, boneMap); umaData.umaRecipe.AddDNAUpdater(slotData.slotDNA); } } umaData.myRenderer.quality = SkinQuality.Bone4; //umaData.myRenderer.useLightProbes = true; var materials = combinedMaterialList.ToArray(); umaData.myRenderer.sharedMaterials = materials; //umaData.myRenderer.sharedMesh.RecalculateBounds(); umaData.myRenderer.sharedMesh.name = "UMAMesh"; umaData.firstBake = false; //FireSlotAtlasNotification(umaData, materials); }