Ejemplo n.º 1
0
    public void CreatPrefab()
    {
        #region cloths
        EditorUtility.DisplayProgressBar(sex.ToString(), "clothes resources are dealing...", 1 / 7f);
        IEditorCloth cloths = EditorClothFactory.Creat(sex, restype);
        cloths.CreatPrefab();
        #endregion

        #region race
        EditorUtility.DisplayProgressBar(sex.ToString(), "create race...", 2 / 7f);
        TPoseEditor pose = TPoseEditorFactory.Creat(sex, obj, restype);
        RaceData    rd   = pose.CreatTPose();
        #endregion

        #region animator

        EditorUtility.DisplayProgressBar(sex.ToString(), "animations resources are dealing...", 3 / 7f);
        IEditorAnimation          anim       = EditorAnimationFactory.Creat(sex, restype);
        RuntimeAnimatorController controller = anim.Creat();

        #endregion

        #region base
        EditorUtility.DisplayProgressBar(sex.ToString(), "body parts resources are dealing...", 5 / 7f);

        List <SlotOverlayItem> sos = new List <SlotOverlayItem>();

        SlotOverlayItem     eyeItem      = new SlotOverlayItem();
        BaseClothItemEditor eyes         = new EyesEditor(obj, restype);
        SlotDataAsset       eyes_slot    = eyes.CreatSlot();
        OverlayDataAsset    eyes_overlay = eyes.CreatOverlay();
        eyeItem.slot      = eyes_slot;
        eyeItem.overlay   = eyes_overlay;
        eyeItem.partIndex = eyes.WearPos;

        SlotOverlayItem     faceItem     = new SlotOverlayItem();
        BaseClothItemEditor face         = new FaceEditor(obj, restype);
        SlotDataAsset       face_slot    = face.CreatSlot();
        OverlayDataAsset    face_overlay = face.CreatOverlay();
        faceItem.slot      = face_slot;
        faceItem.overlay   = face_overlay;
        faceItem.partIndex = face.WearPos;


        sos.Add(eyeItem);
        sos.Add(faceItem);
        #endregion

        #region CharacterPlayer
        EditorUtility.DisplayProgressBar(sex.ToString(), "create character...", 7 / 7f);
        Dictionary <string, object> dic = new Dictionary <string, object>();
        dic["animatorController"] = controller;
        dic["race"] = rd;
        dic["sos"]  = sos;

        string      assetpath = string.Format("{0}/{1}.prefab", prefabFold, obj.Name);
        IPrefabItem prefab    = new PrefabItem(assetpath);
        prefab.CreatPrefab(null, CreatPrefabFinish, dic);
        #endregion
    }
Ejemplo n.º 2
0
    public List <SlotOverlayItem> CreatData()
    {
        List <SlotOverlayItem> sos = new List <SlotOverlayItem>();
        int    submeshIndex        = 0;
        bool   first         = false;
        string firstSlotPath = null;

        for (int i = 0; i < sharedMaterials.Count; i++)
        {
            SlotOverlayItem item         = new SlotOverlayItem();
            string          materialName = sharedMaterials[i];
            string          name         = baseName + "-" + i;
            if (!first)
            {
                #region slot
                SlotEditor    so        = new SlotEditor(slotMesh, name, slotFold, Mat);
                SlotDataAsset firstSlot = so.Creat();
                item.slot     = firstSlot;
                firstSlotPath = string.Format("{0}/{1}_{2}.asset", PathHelper.GetRelativeAssetPath(slotFold), name, UMAUtils.Slot);
                #endregion

                first = true;
            }
            else
            {
                #region slot
                string target = string.Format("{0}/{1}_{2}.asset", PathHelper.GetRelativeAssetPath(slotFold), name, UMAUtils.Slot);
                FileUtil.CopyFileOrDirectory(firstSlotPath, target);

                AssetDatabase.Refresh();

                ObjectBase    obj     = new ObjectBase(target);
                SlotDataAsset slotSub = obj.Load <SlotDataAsset>();
                slotSub.subMeshIndex = i;
                item.slot            = slotSub;
                #endregion
            }

            #region overlay
            OverlayEditor oe = null;
            if (materialName.EndsWith(CharacterConst.Common))
            {
                oe = new OverlayEditor(overlayFold, comTexture, name, Mat);
            }
            else
            {
                oe = new OverlayEditor(overlayFold, diff, name, Mat);
            }

            OverlayDataAsset overlay = oe.CreatOverlay();
            item.overlay = overlay;
            #endregion

            #region index
            item.partIndex = wearpos * 10 + i;
            #endregion

            sos.Add(item);
        }


        return(sos);
    }