示例#1
0
        public void Init()
        {
            combineConfig = FbxEditor.GetConfig();
            TempEquipSuit fashions = new TempEquipSuit();

            m_FashionList = new List <EquipPart>();
            m_EquipList   = new List <EquipPart>();
            var fashionsuit = XTableMgr.GetTable <FashionSuit>();

            for (int i = 0, max = fashionsuit.length; i < max; ++i)
            {
                FashionSuit.RowData row = fashionsuit[i];
                if (row.FashionID != null)
                {
                    XEquipUtil.MakeEquip(row.SuitName, row.FashionID, m_FashionList, fashions, (int)row.SuitID);
                }
            }
            var equipsuit = XTableMgr.GetTable <EquipSuit>();

            for (int i = 0; i < equipsuit.length; ++i)
            {
                EquipSuit.RowData row = equipsuit[i];
                if (row.EquipID != null)
                {
                    XEquipUtil.MakeEquip(row.SuitName, row.EquipID, m_EquipList, fashions, -1);
                }
            }
        }
示例#2
0
    private void TestAvatar()
    {
        role = XEntityMgr.singleton.CreateTestRole();
        role.EntityObject.AddComponent <XRotation>();

        //时装
        TempEquipSuit fashions = new TempEquipSuit();

        m_FashionList = new List <EquipPart>();
        var fashionsuit = XTableMgr.GetTable <FashionSuit>();

        for (int i = 0, max = fashionsuit.length; i < max; ++i)
        {
            FashionSuit.RowData row = fashionsuit[i];
            if (row.FashionID != null)
            {
                XEquipUtil.MakeEquip(row.SuitName, row.FashionID, m_FashionList, fashions, (int)row.SuitID);
            }
        }

        //装备
        m_EquipList = new List <EquipPart>();
        var equipsuit = XTableMgr.GetTable <EquipSuit>();

        for (int i = 0, max = equipsuit.length; i < max; ++i)
        {
            EquipSuit.RowData row = equipsuit[i];
            if (row.EquipID != null)
            {
                XEquipUtil.MakeEquip(row.SuitName, row.EquipID, m_EquipList, fashions, -1);
            }
        }
    }
示例#3
0
    public override void OnInitial(XEntity enty)
    {
        base.OnInitial(enty);
        XEntity e = enty;

        //时装
        TempEquipSuit fashions = new TempEquipSuit();

        m_FashionList = new List <EquipPart>();
        var fashionsuit = XTableMgr.GetTable <FashionSuit>();

        for (int i = 0, max = fashionsuit.length; i < max; ++i)
        {
            FashionSuit.RowData row = fashionsuit[i];
            if (row.FashionID != null)
            {
                XEquipUtil.MakeEquip(row.SuitName, row.FashionID, m_FashionList, fashions, (int)row.SuitID);
            }
        }

        //装备
        m_EquipList = new List <EquipPart>();
        var equipsuit = XTableMgr.GetTable <EquipSuit>();

        for (int i = 0, max = equipsuit.length; i < max; ++i)
        {
            EquipSuit.RowData row = equipsuit[i];
            if (row.EquipID != null)
            {
                XEquipUtil.MakeEquip(row.SuitName, row.EquipID, m_EquipList, fashions, -1);
            }
        }

        Transform skinmesh = e.EntityObject.transform;

        skin = skinmesh.GetComponent <SkinnedMeshRenderer>();
        if (skin == null)
        {
            skin = skinmesh.gameObject.AddComponent <SkinnedMeshRenderer>();
        }
        skin.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.On;
        e.skin = skin;

        for (EPartType part = EPartType.ECombinePartStart; part < EPartType.ECombinePartEnd; ++part)
        {
            parts[(int)part] = new PartLoadTask(part, this);
        }
        for (EPartType part = EPartType.ECombinePartEnd; part < EPartType.EMountEnd; ++part)
        {
            parts[(int)part] = new MountLoadTask(part, this);
        }
        RegisterEvent(XEventDefine.XEvent_Detach_Host, OnDetachHost);

        EquipPart(m_FashionList[0]);
    }
示例#4
0
    public void EquipPart(EquipPart part)
    {
        fashionList = new List <FashionPositionInfo>();
        FashionPositionInfo fpi = new FashionPositionInfo();

        fpi.fasionID    = 0;
        fpi.presentName = "0";
        fpi.replace     = false;
        fpi.equipName   = "";
        for (int i = 0; i < part.partPath.Length; ++i) //length = 8
        {
            string path = part.partPath[i];
            if (string.IsNullOrEmpty(path))
            {
                path = XEquipUtil.GetDefaultPath((EPartType)i, (entity as NativeRole).defEquip);
            }
            fpi.equipName = path;
            fashionList.Add(fpi);
        }
        EquipAll(fashionList.ToArray());
    }
示例#5
0
        private void Preview(EquipPart part)
        {
            //1.mesh collection
            List <CombineInstance> ciList = new List <CombineInstance>();

            Texture[]            m_tex = new Texture[8];
            DefaultEquip.RowData data  = XTableMgr.GetTable <DefaultEquip>().GetByUID(m_profession + 1);
            string name = "";

            for (int i = 0; i < part.partPath.Length; ++i)
            {
                string          path = part.partPath[i];
                CombineInstance ci   = new CombineInstance();
                if (string.IsNullOrEmpty(path))
                {
                    path = XEquipUtil.GetDefaultPath((EPartType)i, data);
                }
                else if (name == "")
                {
                    int index = path.LastIndexOf("_");
                    if (index >= 0)
                    {
                        name = path.Substring(0, index);
                    }
                }
                if (!string.IsNullOrEmpty(path))
                {
                    path = "Assets/Resources/Equipments/" + path;
                    Mesh    mesh = AssetDatabase.LoadAssetAtPath <Mesh>(path + AssetType.Asset);
                    Texture tex  = AssetDatabase.LoadAssetAtPath <Texture>(path + AssetType.TGA);
                    if (mesh != null)
                    {
                        ci.mesh  = mesh;
                        m_tex[i] = tex;
                    }
                    if (ci.mesh != null)
                    {
                        ciList.Add(ci);
                    }
                }
            }

            if (ciList.Count > 0)
            {
                if (newGo != null)
                {
                    GameObject.DestroyImmediate(newGo);
                }
                string skinPrfab = "Assets/Resources/Prefabs/" + combineConfig.PrefabName[m_profession] + AssetType.Prefab;
                newGo = GameObject.Instantiate(AssetDatabase.LoadAssetAtPath <Object>(skinPrfab)) as GameObject;
                if (name != "")
                {
                    newGo.name = name;
                }
                newGo.transform.localRotation = Quaternion.Euler(new Vector3(0, 180, 0));

                //2.combine
                Transform           t      = newGo.transform;
                SkinnedMeshRenderer newSmr = t.GetComponent <SkinnedMeshRenderer>();
                newSmr.sharedMesh = new Mesh();
                newSmr.sharedMesh.CombineMeshes(ciList.ToArray(), true, false);

                //3.set material
                Material mat = new Material(Shader.Find("Custom/Skin/RimlightBlend8"));
                for (int i = 0; i < m_tex.Length; ++i)
                {
                    mat.SetTexture("_Tex" + i.ToString(), m_tex[i]);
                }
                newSmr.sharedMaterial = mat;

                if (data.WeaponPoint != null && data.WeaponPoint.Length > 0)
                {
                    string    weapon = data.WeaponPoint[0].ToString();
                    Transform trans  = newGo.transform.Find(weapon);
                    if (trans != null)
                    {
                        string path = part.mainWeapon;
                        if (string.IsNullOrEmpty(path))
                        {
                            path = data.Weapon;
                        }

                        GameObject mainWeapon = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Resources/Equipments/" + path + AssetType.Prefab);
                        if (mainWeapon != null)
                        {
                            GameObject instance = GameObject.Instantiate(mainWeapon) as GameObject;
                            instance.transform.parent        = trans;
                            instance.transform.localPosition = Vector3.zero;
                            instance.transform.localRotation = Quaternion.identity;
                            instance.transform.localScale    = Vector3.one;
                        }
                    }
                }
            }
        }
示例#6
0
 private static bool ReturnMaterial(Material mat, string path)
 {
     XEquipUtil.ReturnMaterial(mat);
     return(true);
 }
示例#7
0
    /// <summary>
    /// 处理mesh和tex的对应关系,并处理uv
    /// </summary>
    private bool Combine()
    {
        int partCount = 0;

        for (int i = (int)EPartType.ECombinePartStart; i < (int)EPartType.ECombinePartEnd; ++i)
        {
            PartLoadTask part = parts[i] as PartLoadTask;
            if (part.HasMesh())
            {
                partCount++;
            }
        }
        CombineInstance[] combineArray = GetMatCombineInstanceArray(partCount);
        if (combineArray != null)
        {
            //1.mesh collection
            int index = 0;
            for (int i = (int)EPartType.ECombinePartStart; i < (int)EPartType.ECombinePartEnd; ++i)
            {
                PartLoadTask part = parts[i] as PartLoadTask;
                if (part.HasMesh())
                {
                    CombineInstance ci = new CombineInstance();
                    if (part.mesh != null)
                    {
                        ci.mesh = part.mesh;
                    }
                    ci.subMeshIndex       = 0;
                    combineArray[index++] = ci;
                }
            }
            //2.combine
            if (skin.sharedMesh == null)
            {
                skin.sharedMesh = new Mesh();
            }
            else
            {
                skin.sharedMesh.Clear(true);
            }
            skin.gameObject.SetActive(false);
            skin.sharedMesh.CombineMeshes(combineArray, true, false);
            skin.gameObject.SetActive(true);

            //3.set material
            if (skin != null)
            {
                XEquipUtil.ReturnMaterial(skin.sharedMaterial);
            }
            skin.sharedMaterial = XEquipUtil.GetRoleMat();
            skin.GetPropertyBlock(mpb);

            //4. postload - set texture
            for (EPartType part = EPartType.ECombinePartStart; part < EPartType.EMountEnd; ++part)
            {
                parts[(int)part].PostLoad();
            }
            return(true);
        }
        return(false);
    }