protected override void Start() { _DKumaGenerator = GameObject.Find("DKUMAGenerator").GetComponent <DKUMAGenerator>(); // umaGenerator.umaData.cleanTextures(); materialDefinitionList = new List <DKUMAData.MaterialDefinition>(); //Update atlas area can be handled here DKUMAData.MaterialDefinition tempMaterialDefinition = new DKUMAData.MaterialDefinition(); DKSlotData[] slots = umaGenerator.umaData.umaRecipe.slotDataList; if (slots == null) { Debug.LogError(umaGenerator.umaData.gameObject.name + " can not be generated : the Slot list is umpty. Verify your Elements configuration."); } else if (slots.Length > 0) { for (int i = 0; i < slots.Length; i++) { if (slots[i] != null && slots[i].overlayList.Count != 0) { tempMaterialDefinition = new DKUMAData.MaterialDefinition(); tempMaterialDefinition.baseTexture = slots[i].overlayList[0].textureList; tempMaterialDefinition.baseColor = slots[i].overlayList[0].color; tempMaterialDefinition.materialSample = slots[i].materialSample; tempMaterialDefinition.overlays = new DKUMAData.textureData[slots[i].overlayList.Count - 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].overlayList[0].channelMask; tempMaterialDefinition.channelAdditiveMask[0] = slots[i].overlayList[0].channelAdditiveMask; tempMaterialDefinition.slotData = slots[i]; for (int overlayID = 0; overlayID < slots[i].overlayList.Count - 1; overlayID++) { tempMaterialDefinition.overlays[overlayID] = new DKUMAData.textureData(); tempMaterialDefinition.rects[overlayID] = slots[i].overlayList[overlayID + 1].rect; tempMaterialDefinition.overlays[overlayID].textureList = slots[i].overlayList[overlayID + 1].textureList; tempMaterialDefinition.overlayColors[overlayID] = slots[i].overlayList[overlayID + 1].color; tempMaterialDefinition.channelMask[overlayID + 1] = slots[i].overlayList[overlayID + 1].channelMask; tempMaterialDefinition.channelAdditiveMask[overlayID + 1] = slots[i].overlayList[overlayID + 1].channelAdditiveMask; } materialDefinitionList.Add(tempMaterialDefinition); } } } if (_DKumaGenerator.usePRO && UnityEditorInternal.InternalEditorUtility.HasPro()) { textureProcessPROCoroutine = new DK_RPG_TextureProcessPROCoroutine(); } else { textureProcessIndieCoroutine = new DK_RPG_TextureProcessIndieCoroutine(); } packTexture = new MaxRectsBinPack(_DKumaGenerator.atlasResolution, _DKumaGenerator.atlasResolution, false); }
private void OrderMaterialDefinition() { //Ordering List based on textureSize, for atlas calculation for (int i = 0; i < orderedMaterialDefinition.Length; i++) { int LargestIndex = i; for (int i2 = i; i2 < orderedMaterialDefinition.Length; i2++) { if (orderedMaterialDefinition[LargestIndex].baseTexture[0].width * orderedMaterialDefinition[LargestIndex].baseTexture[0].height < orderedMaterialDefinition[i2].baseTexture[0].width * orderedMaterialDefinition[i2].baseTexture[0].height) { LargestIndex = i2; } if (i2 == orderedMaterialDefinition.Length - 1) { DKUMAData.MaterialDefinition tempMaterialDefinition = orderedMaterialDefinition[i]; orderedMaterialDefinition[i] = orderedMaterialDefinition[LargestIndex]; orderedMaterialDefinition[LargestIndex] = tempMaterialDefinition; } } } }