protected override void Start() { backUpTexture = umaGenerator.umaData.backUpTextures(); umaGenerator.umaData.cleanTextures(); materialDefinitionList = new List<UMAData.MaterialDefinition>(); //Update atlas area can be handled here UMAData.MaterialDefinition tempMaterialDefinition = new UMAData.MaterialDefinition(); SlotData[] slots = umaGenerator.umaData.umaRecipe.slotDataList; for(int i = 0; i < slots.Length; i++){ if(slots[i] != null){ tempMaterialDefinition = new UMAData.MaterialDefinition(); tempMaterialDefinition.baseTexture = slots[i].GetOverlay(0).textureList; tempMaterialDefinition.baseColor = slots[i].GetOverlay(0).color; tempMaterialDefinition.materialSample = slots[i].materialSample; tempMaterialDefinition.overlays = new UMAData.textureData[slots[i].OverlayCount -1]; tempMaterialDefinition.overlayColors = new Color32[tempMaterialDefinition.overlays.Length]; tempMaterialDefinition.rects = new Rect[tempMaterialDefinition.overlays.Length]; tempMaterialDefinition.channelMask = new Color32[tempMaterialDefinition.overlays.Length+1][]; tempMaterialDefinition.channelAdditiveMask = new Color32[tempMaterialDefinition.overlays.Length+1][]; tempMaterialDefinition.channelMask[0] = slots[i].GetOverlay(0).channelMask; tempMaterialDefinition.channelAdditiveMask[0] = slots[i].GetOverlay(0).channelAdditiveMask; tempMaterialDefinition.slotData = slots[i]; for(int overlayID = 0; overlayID < slots[i].OverlayCount-1; overlayID++){ tempMaterialDefinition.overlays[overlayID] = new UMAData.textureData(); tempMaterialDefinition.rects[overlayID] = slots[i].GetOverlay(overlayID+1).rect; tempMaterialDefinition.overlays[overlayID].textureList = slots[i].GetOverlay(overlayID+1).textureList; tempMaterialDefinition.overlayColors[overlayID] = slots[i].GetOverlay(overlayID+1).color; tempMaterialDefinition.channelMask[overlayID+1] = slots[i].GetOverlay(overlayID + 1).channelMask; tempMaterialDefinition.channelAdditiveMask[overlayID+1] = slots[i].GetOverlay(overlayID + 1).channelAdditiveMask; } materialDefinitionList.Add(tempMaterialDefinition); } } if(umaGenerator.usePRO){ textureProcessPROCoroutine = new TextureProcessPROCoroutine(); }else{ textureProcessIndieCoroutine = new TextureProcessIndieCoroutine(); } packTexture = new MaxRectsBinPack(umaGenerator.atlasResolution,umaGenerator.atlasResolution,false); }
protected override void Start() { backUpTexture = umaData.backUpTextures(); umaData.cleanTextures(); materialDefinitionList = new List<UMAData.MaterialDefinition>(); //Update atlas area can be handled here UMAData.MaterialDefinition tempMaterialDefinition = new UMAData.MaterialDefinition(); SlotData[] slots = umaData.umaRecipe.slotDataList; for(int i = 0; i < slots.Length; i++) { if (slots[i] != null && slots[i].GetOverlay(0) != null) { tempMaterialDefinition = new UMAData.MaterialDefinition(); tempMaterialDefinition.baseTexture = slots[i].GetOverlay(0).textureList; tempMaterialDefinition.baseColor = slots[i].GetOverlay(0).color; tempMaterialDefinition.materialSample = slots[i].materialSample; int overlays = 0; for (int overlayCounter = 0; overlayCounter < slots[i].OverlayCount; overlayCounter++) { var overlay = slots[i].GetOverlay(overlayCounter); if (overlay != null) { overlays++; if (overlay.useAdvancedMasks) { overlay.EnsureChannels(slots[i].textureNameList.Length); } } } tempMaterialDefinition.overlays = new UMAData.textureData[overlays - 1]; tempMaterialDefinition.overlayColors = new Color32[tempMaterialDefinition.overlays.Length]; tempMaterialDefinition.rects = new Rect[tempMaterialDefinition.overlays.Length]; tempMaterialDefinition.channelMask = new Color32[tempMaterialDefinition.overlays.Length+1][]; tempMaterialDefinition.channelAdditiveMask = new Color32[tempMaterialDefinition.overlays.Length+1][]; tempMaterialDefinition.channelMask[0] = slots[i].GetOverlay(0).channelMask; tempMaterialDefinition.channelAdditiveMask[0] = slots[i].GetOverlay(0).channelAdditiveMask; tempMaterialDefinition.slotData = slots[i]; int overlayID = 0; for (int overlayCounter = 0; overlayCounter < slots[i].OverlayCount - 1; overlayCounter++) { var overlay = slots[i].GetOverlay(overlayCounter + 1); if (overlay == null) continue; tempMaterialDefinition.overlays[overlayID] = new UMAData.textureData(); tempMaterialDefinition.rects[overlayID] = overlay.rect; tempMaterialDefinition.overlays[overlayID].textureList = overlay.textureList; tempMaterialDefinition.overlayColors[overlayID] = overlay.color; tempMaterialDefinition.channelMask[overlayID+1] = overlay.channelMask; tempMaterialDefinition.channelAdditiveMask[overlayID+1] = overlay.channelAdditiveMask; overlayID++; } materialDefinitionList.Add(tempMaterialDefinition); } } packTexture = new MaxRectsBinPack(umaGenerator.atlasResolution,umaGenerator.atlasResolution,false); }