public static bool SlotIsValid(packedSlotData packedSlotData) { return(packedSlotData != null && !string.IsNullOrEmpty(packedSlotData.slotID)); }
public static UMAPackRecipe PackRecipe(UMA.UMAData.UMARecipe umaRecipe) { UMAPackRecipe umaPackRecipe = new UMAPackRecipe(); //var umaPackRecipe = new Packed umaPackRecipe.packedSlotDataList = new packedSlotData[umaRecipe.slotDataList.Length]; umaPackRecipe.race = umaRecipe.raceData.raceName; umaPackRecipe.packedDna.Clear(); foreach (var dna in umaRecipe.GetAllDna()) { UMAPackedDna packedDna = new UMAPackedDna(); packedDna.dnaType = dna.GetType().Name; packedDna.packedDna = UMA.UMADna.SaveInstance(dna); umaPackRecipe.packedDna.Add(packedDna); } for (int i = 0; i < umaRecipe.slotDataList.Length; i++) { if (umaRecipe.slotDataList[i] != null) { if (umaRecipe.slotDataList[i].listID != -1 && umaPackRecipe.packedSlotDataList[i] == null) { packedSlotData tempPackedSlotData; tempPackedSlotData = new packedSlotData(); tempPackedSlotData.slotID = umaRecipe.slotDataList[i].slotName; tempPackedSlotData.overlayScale = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayScale * 100); tempPackedSlotData.OverlayDataList = new packedOverlayData[umaRecipe.slotDataList[i].OverlayCount]; for (int overlayID = 0; overlayID < tempPackedSlotData.OverlayDataList.Length; overlayID++) { tempPackedSlotData.OverlayDataList[overlayID] = new packedOverlayData(); tempPackedSlotData.OverlayDataList[overlayID].overlayID = umaRecipe.slotDataList[i].GetOverlay(overlayID).overlayName; if (umaRecipe.slotDataList[i].GetOverlay(overlayID).color != new Color(1.0f, 1.0f, 1.0f, 1.0f)) { //Color32 instead of Color? tempPackedSlotData.OverlayDataList[overlayID].colorList = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].colorList[0] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.r * 255.0f); tempPackedSlotData.OverlayDataList[overlayID].colorList[1] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.g * 255.0f); tempPackedSlotData.OverlayDataList[overlayID].colorList[2] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.b * 255.0f); tempPackedSlotData.OverlayDataList[overlayID].colorList[3] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.a * 255.0f); } if (umaRecipe.slotDataList[i].GetOverlay(overlayID).rect != new Rect(0, 0, 0, 0)) { //Might need float in next version tempPackedSlotData.OverlayDataList[overlayID].rectList = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].rectList[0] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.x; tempPackedSlotData.OverlayDataList[overlayID].rectList[1] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.y; tempPackedSlotData.OverlayDataList[overlayID].rectList[2] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.width; tempPackedSlotData.OverlayDataList[overlayID].rectList[3] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.height; } if (umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask != null) { tempPackedSlotData.OverlayDataList[overlayID].channelMaskList = new int[umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask.Length][]; for (int channelAdjust = 0; channelAdjust < umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask.Length; channelAdjust++) { tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust] = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][0] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].r; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][1] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].g; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][2] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].b; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][3] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].a; } } if (umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask != null) { tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList = new int[umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask.Length][]; for (int channelAdjust = 0; channelAdjust < umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask.Length; channelAdjust++) { tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust] = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][0] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].r; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][1] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].g; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][2] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].b; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][3] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].a; } } } umaPackRecipe.packedSlotDataList[i] = tempPackedSlotData; //Shared overlays wont generate duplicated data for (int i2 = i + 1; i2 < umaRecipe.slotDataList.Length; i2++) { if (umaRecipe.slotDataList[i2] != null) { if (umaPackRecipe.packedSlotDataList[i2] == null) { if (umaRecipe.slotDataList[i].GetOverlayList() == umaRecipe.slotDataList[i2].GetOverlayList()) { tempPackedSlotData = new packedSlotData(); tempPackedSlotData.slotID = umaRecipe.slotDataList[i2].slotName; tempPackedSlotData.copyOverlayIndex = i; //umaPackRecipe.packedSlotDataList[i2] = tempPackedSlotData; } } } } } } } return(umaPackRecipe); }
public virtual void PackRecipe() { umaPackRecipe.packedSlotDataList = new packedSlotData[umaRecipe.slotDataList.Length]; umaPackRecipe.race = umaRecipe.raceData.raceName; // Debug.Log ( " Autosaving 5 (Race) : "+umaPackRecipe.race ); // DNA umaPackRecipe.packedDna.Clear(); foreach (var dna in umaRecipe.umaDna.Values) { // Debug.Log ( " Autosaving 6 "+dna.Names[1].ToString()+" / "/*+dna.Values[0].ToString()*/); // UMA UMAPackedDna packedDna = new UMAPackedDna(); packedDna.dnaType = dna.GetType().Name; packedDna.packedDna = DKUMADna.SaveInstance(dna); umaPackRecipe.packedDna.Add(packedDna); } // DK UMA /* DK_UMAPackedDna DK_packedDna = new DK_UMAPackedDna(); * DK_packedDna.dnaType = "Modifyers"; * DK_packedDna.tmpDNAList = DNAList2; * // DK_packedDna.packedDna = UMADna.SaveInstance(dna); * umaPackRecipe.DKpackedDna = DK_packedDna; * // Debug.Log ( DK_packedDna.dnaType ); * * foreach (var dna in DNAList2) { * string _value = dna.Value.ToString ("f3"); * dna.Value = float.Parse (_value); * } */ // Slots for (int i = 0; i < umaRecipe.slotDataList.Length; i++) { if (umaRecipe.slotDataList[i] != null) { if (umaRecipe.slotDataList[i].listID != -1 && umaPackRecipe.packedSlotDataList[i] == null) { packedSlotData tempPackedSlotData; tempPackedSlotData = new packedSlotData(); tempPackedSlotData.sID = umaRecipe.slotDataList[i].slotName; tempPackedSlotData.oS = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayScale * 100); tempPackedSlotData.ODL = new DKUMAData.packedOverlayData[umaRecipe.slotDataList[i].overlayList.Count]; for (int oID = 0; oID < tempPackedSlotData.ODL.Length; oID++) { tempPackedSlotData.ODL[oID] = new packedOverlayData(); tempPackedSlotData.ODL[oID].oID = umaRecipe.slotDataList[i].overlayList[oID].overlayName; if (umaRecipe.slotDataList[i].overlayList[oID].color != new Color(1.0f, 1.0f, 1.0f, 1.0f)) { //Color32 instead of Color? tempPackedSlotData.ODL[oID].cL = new int[4]; tempPackedSlotData.ODL[oID].cL[0] = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayList[oID].color.r * 255.0f); tempPackedSlotData.ODL[oID].cL[1] = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayList[oID].color.g * 255.0f); tempPackedSlotData.ODL[oID].cL[2] = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayList[oID].color.b * 255.0f); tempPackedSlotData.ODL[oID].cL[3] = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayList[oID].color.a * 255.0f); } if (umaRecipe.slotDataList[i].overlayList[oID].rect != new Rect(0, 0, 0, 0)) { //Might need float in next version tempPackedSlotData.ODL[oID].rL = new int[4]; tempPackedSlotData.ODL[oID].rL[0] = (int)umaRecipe.slotDataList[i].overlayList[oID].rect.x; tempPackedSlotData.ODL[oID].rL[1] = (int)umaRecipe.slotDataList[i].overlayList[oID].rect.y; tempPackedSlotData.ODL[oID].rL[2] = (int)umaRecipe.slotDataList[i].overlayList[oID].rect.width; tempPackedSlotData.ODL[oID].rL[3] = (int)umaRecipe.slotDataList[i].overlayList[oID].rect.height; } if (umaRecipe.slotDataList[i].overlayList[oID].channelMask != null) { tempPackedSlotData.ODL[oID].cML = new int[umaRecipe.slotDataList[i].overlayList[oID].channelMask.Length][]; for (int channelAdjust = 0; channelAdjust < umaRecipe.slotDataList[i].overlayList[oID].channelMask.Length; channelAdjust++) { tempPackedSlotData.ODL[oID].cML[channelAdjust] = new int[4]; tempPackedSlotData.ODL[oID].cML[channelAdjust][0] = umaRecipe.slotDataList[i].overlayList[oID].channelMask[channelAdjust].r; tempPackedSlotData.ODL[oID].cML[channelAdjust][1] = umaRecipe.slotDataList[i].overlayList[oID].channelMask[channelAdjust].g; tempPackedSlotData.ODL[oID].cML[channelAdjust][2] = umaRecipe.slotDataList[i].overlayList[oID].channelMask[channelAdjust].b; tempPackedSlotData.ODL[oID].cML[channelAdjust][3] = umaRecipe.slotDataList[i].overlayList[oID].channelMask[channelAdjust].a; } } if (umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask != null) { tempPackedSlotData.ODL[oID].cAML = new int[umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask.Length][]; for (int channelAdjust = 0; channelAdjust < umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask.Length; channelAdjust++) { tempPackedSlotData.ODL[oID].cAML[channelAdjust] = new int[4]; tempPackedSlotData.ODL[oID].cAML[channelAdjust][0] = umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask[channelAdjust].r; tempPackedSlotData.ODL[oID].cAML[channelAdjust][1] = umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask[channelAdjust].g; tempPackedSlotData.ODL[oID].cAML[channelAdjust][2] = umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask[channelAdjust].b; tempPackedSlotData.ODL[oID].cAML[channelAdjust][3] = umaRecipe.slotDataList[i].overlayList[oID].channelAdditiveMask[channelAdjust].a; } } } umaPackRecipe.packedSlotDataList[i] = tempPackedSlotData; //Shared overlays wont generate duplicated data for (int i2 = i + 1; i2 < umaRecipe.slotDataList.Length; i2++) { if (umaRecipe.slotDataList[i2] != null) { if (umaPackRecipe.packedSlotDataList[i2] == null) { if (umaRecipe.slotDataList[i].overlayList == umaRecipe.slotDataList[i2].overlayList) { tempPackedSlotData = new packedSlotData(); tempPackedSlotData.sID = umaRecipe.slotDataList[i2].slotName; tempPackedSlotData.cOI = i; //umaPackRecipe.packedSlotDataList[i2] = tempPackedSlotData; } } } } } } } }
public static UMAPackRecipe PackRecipe(UMA.UMAData.UMARecipe umaRecipe) { UMAPackRecipe umaPackRecipe = new UMAPackRecipe(); //var umaPackRecipe = new Packed umaPackRecipe.packedSlotDataList = new packedSlotData[umaRecipe.slotDataList.Length]; umaPackRecipe.race = umaRecipe.raceData.raceName; umaPackRecipe.packedDna.Clear(); foreach (var dna in umaRecipe.umaDna.Values) { UMAPackedDna packedDna = new UMAPackedDna(); packedDna.dnaType = dna.GetType().Name; packedDna.packedDna = UMA.UMADna.SaveInstance(dna); umaPackRecipe.packedDna.Add(packedDna); } for (int i = 0; i < umaRecipe.slotDataList.Length; i++) { if (umaRecipe.slotDataList[i] != null) { if (umaRecipe.slotDataList[i].listID != -1 && umaPackRecipe.packedSlotDataList[i] == null) { packedSlotData tempPackedSlotData; tempPackedSlotData = new packedSlotData(); tempPackedSlotData.slotID = umaRecipe.slotDataList[i].slotName; tempPackedSlotData.overlayScale = Mathf.FloorToInt(umaRecipe.slotDataList[i].overlayScale * 100); tempPackedSlotData.OverlayDataList = new packedOverlayData[umaRecipe.slotDataList[i].OverlayCount]; for (int overlayID = 0; overlayID < tempPackedSlotData.OverlayDataList.Length; overlayID++) { tempPackedSlotData.OverlayDataList[overlayID] = new packedOverlayData(); tempPackedSlotData.OverlayDataList[overlayID].overlayID = umaRecipe.slotDataList[i].GetOverlay(overlayID).overlayName; if (umaRecipe.slotDataList[i].GetOverlay(overlayID).color != new Color(1.0f, 1.0f, 1.0f, 1.0f)) { //Color32 instead of Color? tempPackedSlotData.OverlayDataList[overlayID].colorList = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].colorList[0] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.r * 255.0f); tempPackedSlotData.OverlayDataList[overlayID].colorList[1] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.g * 255.0f); tempPackedSlotData.OverlayDataList[overlayID].colorList[2] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.b * 255.0f); tempPackedSlotData.OverlayDataList[overlayID].colorList[3] = Mathf.FloorToInt(umaRecipe.slotDataList[i].GetOverlay(overlayID).color.a * 255.0f); } if (umaRecipe.slotDataList[i].GetOverlay(overlayID).rect != new Rect(0, 0, 0, 0)) { //Might need float in next version tempPackedSlotData.OverlayDataList[overlayID].rectList = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].rectList[0] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.x; tempPackedSlotData.OverlayDataList[overlayID].rectList[1] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.y; tempPackedSlotData.OverlayDataList[overlayID].rectList[2] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.width; tempPackedSlotData.OverlayDataList[overlayID].rectList[3] = (int)umaRecipe.slotDataList[i].GetOverlay(overlayID).rect.height; } if (umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask != null) { tempPackedSlotData.OverlayDataList[overlayID].channelMaskList = new int[umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask.Length][]; for (int channelAdjust = 0; channelAdjust < umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask.Length; channelAdjust++) { tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust] = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][0] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].r; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][1] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].g; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][2] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].b; tempPackedSlotData.OverlayDataList[overlayID].channelMaskList[channelAdjust][3] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelMask[channelAdjust].a; } } if (umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask != null) { tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList = new int[umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask.Length][]; for (int channelAdjust = 0; channelAdjust < umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask.Length; channelAdjust++) { tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust] = new int[4]; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][0] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].r; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][1] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].g; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][2] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].b; tempPackedSlotData.OverlayDataList[overlayID].channelAdditiveMaskList[channelAdjust][3] = umaRecipe.slotDataList[i].GetOverlay(overlayID).channelAdditiveMask[channelAdjust].a; } } } umaPackRecipe.packedSlotDataList[i] = tempPackedSlotData; //Shared overlays wont generate duplicated data for (int i2 = i + 1; i2 < umaRecipe.slotDataList.Length; i2++) { if (umaRecipe.slotDataList[i2] != null) { if (umaPackRecipe.packedSlotDataList[i2] == null) { if (umaRecipe.slotDataList[i].GetOverlayList() == umaRecipe.slotDataList[i2].GetOverlayList()) { tempPackedSlotData = new packedSlotData(); tempPackedSlotData.slotID = umaRecipe.slotDataList[i2].slotName; tempPackedSlotData.copyOverlayIndex = i; //umaPackRecipe.packedSlotDataList[i2] = tempPackedSlotData; } } } } } } } return umaPackRecipe; }