예제 #1
0
파일: Avater.cs 프로젝트: zuojiashun/src
        /// <summary>
        /// 仅仅创建一个模型
        /// </summary>
        /// <param name="body"></param>
        /// <param name="weapon"></param>
        /// <param name="wing"></param>
        /// <returns></returns>
        public bool CreateAvatar(GameObject parent, List <SuitInfo> lstSuit, int nLayer = 0, Action <object> callback = null, object param = null)
        {
            m_CallBack = callback;
            m_Param    = param;

            IRenderSystem rs = RareEngine.Instance().GetRenderSystem();

            if (rs == null)
            {
                return(false);
            }

            for (int i = 0; i < lstSuit.Count; ++i)
            {
                m_lstSuitData.Add(new SuitData
                {
                    info = lstSuit[i],
                    obj  = null,
                });
            }


            m_nLayer = nLayer;
            for (int i = 0; i < m_lstSuitData.Count; ++i)
            {
                if (m_lstSuitData[i] == null)
                {
                    continue;
                }

                if (m_lstSuitData[i].info.pos == SuitPos.Cloth)
                {
                    //Engine.Utility.Log.Error("Create Body");
                    //先创建身体
                    rs.CreateRenderObj(ref m_lstSuitData[i].info.modelPath, ref m_obj, OnCreateBodyEvent, m_lstSuitData[i].info.pos, TaskPriority.TaskPriority_Normal, true);
                    if (m_obj != null)
                    {
                        // 挂接父节点
                        Vector3 rot = m_obj.GetNode().GetTransForm().localEulerAngles;
                        m_obj.GetNode().GetTransForm().parent           = parent.transform;
                        m_obj.GetNode().GetTransForm().localPosition    = Vector3.zero;
                        m_obj.GetNode().GetTransForm().localEulerAngles = rot;
                        m_obj.GetNode().GetTransForm().localScale       = Vector3.one;
                    }
                    else
                    {
                        Engine.Utility.Log.Error("obj is null path is " + m_lstSuitData[i].info.modelPath);
                    }
                }
            }

            return(true);
        }
예제 #2
0
파일: GameMain.cs 프로젝트: zuojiashun/src
    private void LoadRenderObj(string strObj)
    {
        //人物资源预先加载
        IRenderObj    obj = null;
        IRenderSystem rs  = RareEngine.Instance().GetRenderSystem();

        rs.CreateRenderObj(ref strObj, ref obj, null, Vector3.zero, TaskPriority.TaskPriority_Immediate, true);
        if (obj != null)
        {
            rs.RemoveRenderObj(obj);
        }
    }
예제 #3
0
    private void LoadRenderObj(string strObj, string strMaterial)
    {
        //人物资源预先加载
        IRenderObj    obj = null;
        IRenderSystem rs  = RareEngine.Instance().GetRenderSystem();

        rs.CreateRenderObj(ref strObj, ref obj, null, Vector3.zero, TaskPriority.TaskPriority_Normal, true);
        if (obj != null)
        {
            obj.ApplyMaterial(strMaterial);
            rs.RemoveRenderObj(obj);
        }
    }
예제 #4
0
파일: Avater.cs 프로젝트: zuojiashun/src
        //-------------------------------------------------------------------------------------------------------
        private void OnCreateBodyEvent(Engine.IRenderObj obj, object param)
        {
            if (obj == null)
            {
                return;
            }

            m_obj = obj;

            IRenderSystem rs = RareEngine.Instance().GetRenderSystem();

            if (rs == null)
            {
                return;
            }

            //Engine.Utility.Log.Error("OnCreateBodyEvent {0}", m_obj.GetName());

            for (int i = 0; i < m_lstSuitData.Count; ++i)
            {
                if (m_lstSuitData[i] == null)
                {
                    continue;
                }

                if (m_lstSuitData[i].info.pos != SuitPos.Cloth)
                {
                    //Engine.Utility.Log.Error("Create {0}", m_lstSuitData[i].info.pos.ToString());
                    rs.CreateRenderObj(ref m_lstSuitData[i].info.modelPath, ref m_lstSuitData[i].obj, OnCreateRenderObj, m_lstSuitData[i].info.pos, TaskPriority.TaskPriority_Normal, false);
                }
            }

            if (m_lstSuitData.Count == 1 && m_lstSuitData[0].info.pos == SuitPos.Cloth)
            {
                OnCreateRenderObj(obj, SuitPos.None);
            }

            m_obj.SetLayer(m_nLayer);
        }