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); } }
/// <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); }
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); } }
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); } }
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); } }
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(); } } }
/** * @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"); } }
//------------------------------------------------------------------------------------------------------- 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); }