Beispiel #1
0
        public override void Play(ISkillAttacker attacker, SkillEffect se)
        {
            if (attacker == null)
            {
                return;
            }
            IEntity en = attacker.GetGameObject();

            if (en == null)
            {
                return;
            }
            if (!SkillSystem.GetClientGlobal().IsMainPlayer(en))
            {//不是主角不震屏
                return;
            }
            ShakeCameraNodeProp prop = m_NodeProp as ShakeCameraNodeProp;

            if (prop == null)
            {
                return;
            }
            IRenderSystem renderSys = RareEngine.Instance().GetRenderSystem();

            if (renderSys == null)
            {
                Log.Error("RenderSystem is null!");
                return;
            }
            string  camName = "MainCamera";
            ICamera cam     = renderSys.GetCamera(ref camName);

            if (cam != null)
            {
                ICameraCtrl cc = cam.GetCameraCtrl();
                if (cc != null)
                {
                    //   public float duration = 0.2f;//持续时间
                    //   public float strength = 0.5f;//振幅
                    //   public int vibrato = 10;//频率
                    //@brief 开始振动
                    //@param fAmplitude 振幅
                    //@param fFrequency 频率
                    //@param fCycle 周期
                    //@param fTime 持续时间

                    cc.StartShake(prop.strength, prop.vibrato, 1, prop.duration);
                }
            }
            else
            {
                //编辑器代码实现
                Camera.main.DOShakePosition(prop.duration, prop.strength, prop.vibrato, 0);
            }
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
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);
        }
    }
Beispiel #5
0
    public void CreateMainCamera(bool active)
    {
        // 逻辑层初始化
        IRenderSystem renderSys = RareEngine.Instance().GetRenderSystem();

        if (renderSys == null)
        {
            Log.Error("RenderSystem is null!");
            // return;
        }

        // 设置主Camera
        string  strCameraName = "MainCamera";
        ICamera cam           = renderSys.GetCamera(ref strCameraName);

        if (cam != null)
        {
            cam.Enable(active);
            return;
        }

        cam = renderSys.CreateCamera(ref strCameraName, 0.3f, 140f, 45f, -1, CameraClearFlags.Skybox);
        if (cam != null)
        {
            Camera        camera   = cam.GetNode().GetTransForm().gameObject.GetComponent <Camera>();
            AudioListener listener = camera.transform.GetComponent <AudioListener>();
            if (listener != null)
            {
                GameObject.Destroy(listener);
            }
            CameraFollow.Instance.camera = cam;
            Engine.IAudio audio = Engine.RareEngine.Instance().GetAudio();
            if (audio != null)
            {
                audio.SetListener(CameraFollow.Instance.CreateAudioListener());
            }

            camera.cullingMask = -1 - (1 << LayerMask.NameToLayer("UI")) - (1 << LayerMask.NameToLayer("ShowModel")) - (1 << LayerMask.NameToLayer("UIHide"));
            camera.tag         = strCameraName;
            cam.SetDepth((float)Engine.CameraDepth.Scene);
            cam.LookAt(new Vector3(0, 3, 5), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
            UnityEngine.MonoBehaviour.DontDestroyOnLoad(camera.gameObject);
            cam.Enable(active);
        }
    }
Beispiel #6
0
        public override void Stop()
        {
            IRenderSystem renderSys = RareEngine.Instance().GetRenderSystem();

            if (renderSys == null)
            {
                Log.Error("RenderSystem is null!");
                return;
            }
            string  camName = "Main Camera";
            ICamera cam     = renderSys.GetCamera(ref camName);

            if (cam != null)
            {
                ICameraCtrl cc = cam.GetCameraCtrl();
                if (cc != null)
                {
                    cc.StopShake();
                }
            }
        }
Beispiel #7
0
        /**
         * @brief 对象销毁
         */
        public void Destroy()
        {
            if (m_obj != null)
            {
                IRenderSystem rs = RareEngine.Instance().GetRenderSystem();
                if (rs == null)
                {
                    return;
                }

                if (m_obj.GetNode() == null)
                {
                    return;
                }

                if (m_obj.GetNode().GetTransForm() == null)
                {
                    return;
                }


                if (m_obj.GetNode().GetTransForm().parent != null)
                {
                    m_obj.GetNode().GetTransForm().parent = null;
                }

                rs.RemoveRenderObj(m_obj);
                m_obj = null;

                for (int i = 0; i < m_lstSuitData.Count; ++i)
                {
                    if (m_lstSuitData[i].obj != null)
                    {
                        rs.RemoveRenderObj(m_lstSuitData[i].obj);
                    }
                }

                //Engine.Utility.Log.Error("Destroy Avater");
            }
        }
Beispiel #8
0
        //-------------------------------------------------------------------------------------------------------
        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);
        }