コード例 #1
0
 public static bool SlotIsValid(packedSlotData packedSlotData)
 {
     return(packedSlotData != null && !string.IsNullOrEmpty(packedSlotData.slotID));
 }
コード例 #2
0
    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);
    }
コード例 #3
0
ファイル: DKUMAData.cs プロジェクト: aliasn456/Folio
    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;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
コード例 #4
0
    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;
    }