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);
        }
Example #2
0
	    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);
		}