void onClick_Return_Btn(GameObject caster) { Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem(); for (int i = m_CurShowEffect.Count - 1; i >= 0; i--) { Engine.IEffect effect = m_CurShowEffect[i]; renderSys.RemoveEffect(effect); } m_CurShowEffect.Clear(); ResetCameraAnimator(); //返回选择角色界面 if (DataManager.Manager <LoginDataManager>().RoleList.Count > 0) { StepManager.Instance.AddLoginScene(StepManager.CHOOSEROLESCENE, UnityEngine.SceneManagement.LoadSceneMode.Additive, (obj) => { DataManager.Manager <UIPanelManager>().ShowPanel(PanelID.ChooseRolePanel); }); } else { //StepManager.Instance.AddLoginScene(StepManager.LOGINSCENE, (obj) => //{ // DataManager.Manager<UIPanelManager>().ShowPanel(PanelID.LoginPanel); //}); DataManager.Manager <LoginDataManager>().Logout(LoginPanel.ShowUIEnum.StartGame); } HideSelf(); }
public void SetSettingScreenPriority(uint priority) { SettingDataBase data = GameTableManager.Instance.GetTableItem <SettingDataBase>(priority); if (data != null) { //草地扰动 bool grassIsOpen = (data.GrassMoveGrade != 0) ? true : false; IMapSystem mapSys = ClientGlobal.Instance().GetMapSystem(); mapSys.EnableGrassForce(grassIsOpen); Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { //实时阴影 rs.SetShadowLevel((Engine.ShadowLevel)data.RealTime_Shadow); //特效等级 rs.effectLevel = (int)data.ParticleGrade; } //同屏人数 Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); int value = (int)data.PlayerNum; if (es != null) { if (value > MAX_PLAYER || value < MIN_PLAYER) { value = MIN_PLAYER; } es.MaxPlayer = value; } } }
protected override void OnLoading() { base.OnLoading(); rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rd = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(50003); path = rd.strPath; } m_widget = GetComponent <UIWidget>(); m_listDataType = new List <DailyDataType>() { DailyDataType.RiChangHuoDong, DailyDataType.XianShiHuoDong, DailyDataType.JiJiangKaiShi, DailyDataType.ZhouLi, }; m_lst_RewardList = GameTableManager.Instance.GetTableList <DailyAwardDataBase>(); for (int i = 0; i < m_lst_RewardList.Count; i++) { if (!m_lstRewardID.Contains(m_lst_RewardList[i].ID)) { m_lstRewardID.Add(m_lst_RewardList[i].ID); } } UIEventListener.Get(m__Model.gameObject).onDrag = DragModel; }
//播放受击特效 public uint ReqPlayHitFx(string fx_name, Vector3 position, Vector3 rotation, Vector3 scale, int level = 0) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return(0); } if (string.IsNullOrEmpty(fx_name)) { return(0); } string path = fx_name;// (FxDir + fx_name).Replace(".prefab", ".fx").ToLower(); IEffect effect = null; rs.CreateEffect(ref path, ref effect, (obj) => { if (obj == null) { Log.LogGroup("ZDY", "fx load failed: {0}", path); return; } if (obj.GetNodeTransForm() == null) { return; } DoPlay(obj.GetNodeTransForm().gameObject, position, rotation, scale); }, nLevel: level); return(effect.GetID()); }
/// <summary> /// //挂接特效 /// </summary> /// <param name="fx_name"></param> /// <param name="attach_node">挂节点</param> /// <param name="position">偏移位置</param> /// <param name="scale">缩放</param> public uint ReqPlayFx(string fx_name, Transform attach_node, Vector3 position, Vector3 scale, int level = 0) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return(0); } string path = fx_name; if (fx_name.EndsWith(".prefab")) {//先做下对老的兼容 path = (FxDir + fx_name).Replace(".prefab", ".fx").ToLower(); } IEffect effect = null; rs.CreateEffect(ref path, ref effect, (obj) => { if (obj == null) { Log.Error("ReqPlayFx obj ================ fx load failed: " + path); return; } if (obj.GetNodeTransForm() == null) { Log.Error("ReqPlayFx GetNodeTransForm ================ fx load failed: " + path); return; } DoPlay(obj.GetNodeTransForm().gameObject, attach_node, position, scale); }, nLevel: level); return(effect.GetID()); }
public void SetRenderShadow() { int nShadowLevel = ClientGlobal.Instance().gameOption.GetInt("Render", "shadow", 0); Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.SetShadowLevel((Engine.ShadowLevel)nShadowLevel); } }
private void CloseTerrainPos(ref Vector3 curPos) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } // 再计算移动速度 IScene m_curScene = rs.GetActiveScene(); if (m_curScene == null) { return; } //和周围墙做碰撞修正 // 计算得到新位置,还需要做一次碰撞检测,看是否可以行走 //Ray rayLine = new Ray(m_vLastPos, pos - m_vLastPos); //Engine.ColliderInfo colliderInfo = new Engine.ColliderInfo(); //float fDis = Vector3.Distance(pos, m_vLastPos); //if (m_curScene.GetColliderInfo(ref rayLine, ref colliderInfo)) //{ // //Engine.Utility.Log.Trace("Dis:{0}", colliderInfo.distance); // if (colliderInfo.distance < 1.5f) // 应当是玩家的半径 // { // // if (colliderInfo.distance < fDis) // // { // // pos = m_vLastPos + Vector3.Normalize(m_vSpeed) * colliderInfo.distance; // // } // // else // // { // // m_jumpSpeed = Vector3.up * _jumpUp; // // m_vSpeed = m_jumpSpeed ; // m_vSpeed = m_vSpeed - Vector3.Dot(m_vSpeed, colliderInfo.normal) * colliderInfo.normal; // pos = m_vLastPos + m_vSpeed * Time.deltaTime; // /* }*/ // } //} Engine.TerrainInfo info; if (m_curScene.GetTerrainInfo(ref curPos, out info)) { //斜坡速度衰减.... 去掉 //Vector3 right = Vector3.Cross(info.normal, m_dir); //Vector3 speed = Vector3.Cross(right, info.normal); //float cos = Vector3.Dot(m_dir, speed); //m_fSpeedTerrainFact = cos; } curPos.y = info.pos.y; }
//------------------------------------------------------------------------------------------------------- /** * @brief 退出当前场景 * @param */ public void ExitMap() { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.ExitScene(); } mapID = 0; m_bFirstLoad = true; // 清空标识 m_dicNpcInfo.Clear(); m_strMapTexturePath = ""; }
public override void Dead() { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } Engine.IEffect effect = rs.GetEffect(m_uEffectID); if (effect != null) { rs.RemoveEffect(effect); } }
IEffect GetEffectByID(uint id) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return(null); } Engine.IEffect effect = rs.GetEffect(id); if (effect != null) { return(effect); } return(null); }
//------------------------------------------------------------------------------------------------------- /** * @brief 屏幕点击位置转换到场景坐标 * @param pos 屏幕位置 * @param scenePos 场景位置 */ public bool GetScenePos(Vector2 pos, out Engine.TerrainInfo terrainInfo) { terrainInfo = null; Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return(false); } // 再计算移动速度 Engine.IScene scene = rs.GetActiveScene(); if (scene == null) { return(false); } return(scene.GetPickupPos(pos, out terrainInfo)); }
private void LoadEffect(string strEffect, int nCount = 1) { Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem(); Engine.IEffect effect = null; List <Engine.IEffect> temp = new List <IEffect>(); for (int i = 0; i < nCount; i++) { renderSys.CreateEffect(ref strEffect, ref effect, null, Engine.TaskPriority.TaskPriority_Normal, true); temp.Add(effect); } for (int i = 0; i < nCount; i++) { renderSys.RemoveEffect(temp[i]); } temp.Clear(); }
// 实体销毁 public void Release() { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } foreach (var part in m_Parts) { part.Value.Release(); } EntityViewCreator.Instance.RemoveView(m_lID); if (m_EntityView != null) { m_EntityView.Close(); } }
void AddEffect(Vector3 pos, uint effectID) { FxResDataBase edb = GameTableManager.Instance.GetTableItem <FxResDataBase>(effectID); if (edb != null) { // 使用资源配置表 ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <ResourceDataBase>(edb.resPath); if (resDB == null) { Engine.Utility.Log.Error("EffectViewFactory:找不到特效资源路径配置{0}", edb.resPath); return; } string path = resDB.strPath; Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } IEffect effect = null; rs.CreateEffect(ref path, ref effect, (obj) => { if (obj == null) { Log.Error("fx load failed: " + path); return; } if (obj.GetNodeTransForm() == null) { return; } obj.GetNodeTransForm().localPosition = pos; obj.GetNodeTransForm().localRotation = Quaternion.identity; obj.GetNodeTransForm().localScale = Vector3.one; //DoPlay(obj.GetNodeTransForm().gameObject, position, rotation, scale); }); } }
void AddEffect(Vector3 pos) { uint resID = 50054; ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <ResourceDataBase>(resID); if (resDB == null) { Engine.Utility.Log.Error("EffectViewFactory:找不到特效资源路径配置{0}"); return; } string path = resDB.strPath; Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } if (effect != null) { effect.Release(); } rs.CreateEffect(ref path, ref effect, (obj) => { if (obj == null) { return; } if (obj.GetNodeTransForm() == null) { return; } obj.GetNodeTransForm().localPosition = pos; obj.GetNodeTransForm().localRotation = Quaternion.identity; obj.GetNodeTransForm().localScale = Vector3.one; //Engine.Utility.Log.Error("--->>特效坐标:" + mainPlayer.GetPos()); //DoPlay(obj.GetNodeTransForm().gameObject, position, rotation, scale); }); }
//------------------------------------------------------------------------------------------------------- /** * @brief 添加草扰动力 * @param pos 力中心点位置 * @param fForce 力大小 * @param fRadius 力影响范围 */ public void AddGrassWaveForce(Vector3 pos, float fForce, float fRadius) { if (!m_bGrassForce) { return; } Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } // 再计算移动速度 Engine.IScene scene = rs.GetActiveScene(); if (scene == null) { return; } scene.AddGrassWaveForce(pos, fForce, fRadius); }
public void Update(float dt) { if (m_ClientGlobal.MainPlayer == null) { return; } if (m_enterZoneEvent != null) { Client.IEntity mainPlayer = m_ClientGlobal.MainPlayer; if (mainPlayer != null) { int zoneid = this.IsEnterZone(mainPlayer.GetPos()); if (zoneid != -1) { m_enterZoneEvent(zoneid); } } } // 检测遮挡物 Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } // 再计算移动速度 Engine.IScene scene = rs.GetActiveScene(); if (scene == null) { return; } scene.CheckOcclusion(m_ClientGlobal.MainPlayer.GetPos()); }
public float GetTerrainHeight(Vector3 pos) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return(0.0f); } // 再计算移动速度 Engine.IScene curScene = rs.GetActiveScene(); if (curScene == null) { return(0.0f); } Engine.TerrainInfo info; if (!curScene.GetTerrainInfo(ref pos, out info)) { return(0.0f); } return(info.pos.y); }
void OnActionEvent(ref string strEventName, ref string strAnimationName, float time, object param) { if (strEventName == "addEffect_scene" && strAnimationName == Client.EntityAction.ShowLog) { uint nEffectID = (uint)param; table.FxResDataBase edb = GameTableManager.Instance.GetTableItem <table.FxResDataBase>(nEffectID); if (edb != null) { table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(edb.resPath); if (resDB != null) { string strPath = resDB.strPath; string strAttachNode = edb.attachNode; List <float> rotate = edb.rotate; //m_Avater.RenderObj.AddLinkEffect(ref strPath, ref strAttachNode, // new Vector3(edb.offset[0], edb.offset[1], edb.offset[2]), // Quaternion.identity, // Vector3.one); Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem(); Engine.IEffect effect = null; Vector3 vecRotate = new Vector3(rotate[0], rotate[1], rotate[2]); UnityEngine.Quaternion q = new Quaternion(); q.eulerAngles = vecRotate; renderSys.CreateEffect(ref strPath, ref effect, null, Engine.TaskPriority.TaskPriority_Normal, true); effect.GetNode().SetLocalRotate(q); Vector3 pos = new Vector3(edb.offset[0], edb.offset[1], edb.offset[2]); effect.GetNode().SetLocalPosition(pos); m_CurShowEffect.Add(effect); } } } else if (strEventName == "addEffect_body" && strAnimationName == Client.EntityAction.ShowLog) { AssetBundle m_AssetBundle; uint nEffectID = (uint)param; table.FxResDataBase edb = GameTableManager.Instance.GetTableItem <table.FxResDataBase>(nEffectID); if (edb != null) { table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(edb.resPath); if (resDB != null) { string strPath = resDB.strPath; string strAttachNode = edb.attachNode; List <float> rotate = edb.rotate; Vector3 vecRotate = new Vector3(rotate[0], rotate[1], rotate[2]); UnityEngine.Quaternion q = new Quaternion(); q.eulerAngles = vecRotate; m_Avater.RenderObj.AddLinkEffect(ref strPath, ref strAttachNode, new Vector3(edb.offset[0], edb.offset[1], edb.offset[2]), q, Vector3.one); } } } if (strEventName == "standAni" && strAnimationName == Client.EntityAction.ShowLog) { m_bLockRotate = false; m_Avater.PlayAni(Client.EntityAction.Show, null, 0.3f, -1); } if (strEventName == "Dissolve" && strAnimationName == Client.EntityAction.ShowLog) { RenderObjHelper.BeginDissolveEffect(m_Avater.RenderObj); } //if(strEventName=="end" && strAnimationName == Client.EntityAction.ShowLog) //{ // m_bLockRotate = false; // if (null != m_cam_animator) // { // m_cam_animator.SetInteger(m_istateChangeParamHash, 0); // } //m_Avater.PlayAni(Client.EntityAction.Show, null, 0.3f, -1); //} }
void OnSelChanged(enumProfession prof, enmCharSex sex, bool force = false) { if (m_curPro == prof && m_sel_sex == sex && force == false) { //没有改变 return; } m_bLockRotate = true; bool havePre = m_curPro != enumProfession.Profession_None; GetGridByPro(prof).SetSelect(true, havePre); GetPropDesContent(prof).SetActive(true); if (havePre) { if (null != m_rightDesTA) { m_rightDesTA.ResetToBeginning(); m_rightDesTA.Play(true); } GetGridByPro(m_curPro).SetSelect(false); GetPropDesContent(m_curPro).SetActive(false); } else { if (m_rightDesTA != null) { m_rightDesTA.GetComponent <UIWidget>().alpha = m_rightDesTA.to; } } m_prePro = m_curPro; m_curPro = prof; if (m_curPro == enumProfession.Profession_Soldier || m_curPro == enumProfession.Profession_Freeman) { sex = enmCharSex.MALE; } else { sex = enmCharSex.FEMALE; } m_sel_sex = sex; //for (int i = 0; i < m_lstCreateRoleBtn.Count; i++) //{ // m_lstCreateRoleBtn[i].ToggleSelectMask(m_lstCreateRoleBtn[i].m_enumProfession == m_sel_profession); //} if (m_char_obj != null) { GameObject.Destroy(m_char_obj); } //if(m_sel_sex == enmCharSex.MALE) //{ // m_sprite_male_bg.spriteName = "nan_liang"; // m_sprite_female_bg.spriteName = "nv_an"; //} //else //{ // m_sprite_male_bg.spriteName = "nan_an"; // m_sprite_female_bg.spriteName = "nv_liang"; //} //随机一个名字 onClick_Random_name_Btn(null); //if(m_sel_sex == enmCharSex.MALE) // StartCoroutine(LoadModel("ZS_Male_Show")); //else // StartCoroutine(LoadModel("ZS_Female_Show")); var t = Table.Query <table.SelectRoleDataBase>(); table.SelectRoleDataBase item = null; for (int i = 0; i < t.Count; i++) { if (t[i].professionID == (uint)m_curPro && t[i].Sex == m_sel_sex) { item = t[i]; break; } } // var item = table.SelectRoleDataBase.Where(m_sel_profession, m_sel_sex); if (item == null || (item != null && string.IsNullOrEmpty(item.bodyPathRoleShowcase))) { Log.Error("角色展示模型未配置,请检查选人界面表!"); return; } if (m_Avater != null) { RenderObjHelper.EndDissolveEffect(m_Avater.RenderObj); } if (m_Avater != null) { m_Avater.Destroy(); m_Avater = null; } if (m_model_node == null) { Engine.Utility.Log.Error("m_model_node 为 null !!!"); return; } m_model_node.transform.DestroyChildren(); rotateY = m_model_node.localRotation.y; //var table_data = GameTableManager.Instance.GetTableItem<table.SuitDataBase>((uint)item.createRoleResID); //创建角色,模型自带武器 var ritem = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>((uint)item.createRoleResID); if (ritem == null) { Engine.Utility.Log.Error("ritem 为 null !!!"); return; } Client.AvatarUtil.CreateAvater(ref m_Avater, ritem.strPath, m_model_node, m_model_node.gameObject.layer, OnCreateAvater, (int)prof); Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem(); if (renderSys == null) { return; } for (int i = m_CurShowEffect.Count - 1; i >= 0; i--) { Engine.IEffect effect = m_CurShowEffect[i]; renderSys.RemoveEffect(effect); } m_CurShowEffect.Clear(); }
//------------------------------------------------------------------------------------------------------- /** * @brief 进入地图 * @param nMapID 地图ID */ public void EnterMap(uint nMapID, Vector3 pos) { // 读取地图配置表 Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); Engine.Utility.Log.Info("EnterMapStart"); if (rs != null) { if (nMapID == mapID) { return; } Engine.Utility.Log.Info("EnterMapStart mapID"); // 停止背景音乐 Engine.IAudio audio = Engine.RareEngine.Instance().GetAudio(); if (audio != null) { audio.StopMusic(); } // 离开当前场景 Process = 0f; Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.ENTITYSYSTEM_LEAVEMAP, mapID); //进入下一个地图 Engine.Utility.Log.Info("EnterMapStart 离开当前场景"); table.MapDataBase mapDB = GameTableManager.Instance.GetTableItem <table.MapDataBase>(nMapID); if (mapDB == null) { Engine.Utility.Log.Error("MapSystem:找不到地图配置数据{0}", nMapID); return; } Engine.Utility.Log.Info("EnterMapStart 离开当前场景 table.MapDataBase mapDB "); table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(mapDB.dwResPath); if (resDB == null) { Engine.Utility.Log.Error("MapSystem:找不到地图资源路径配置{0}", mapDB.dwResPath); return; } temptime = Time.realtimeSinceStartup; lastInfo = "none"; // 创建寻路模块 mapID = nMapID; // 预加载 mapName = mapDB.strName;// string.Format("{0}({1})", mapDB.strName, uCountryid); // 不是中转空场景 if (nMapID != GameTableManager.Instance.GetClientGlobalConst <int>("map", "emptyid")) { Engine.Utility.Log.Info("EnterMapStart 读取地图配置表 "); // 读取地图配置表 string strMapName = resDB.strPath.ToLower(); m_strMapTexturePath = strMapName.Replace(".map", "").Substring(strMapName.LastIndexOf('/') + 1); Engine.IScene scene = rs.EnterScene(ref strMapName, this); if (scene != null) { scene.StartLoad(pos); } Engine.Utility.Log.Info("EnterMapStart EnterScene name:{0} ", strMapName); // 场景npc配置 LoadClientMap(mapDB.miniMapInfo.ToLower()); //LoadClienMapArea(strMapName.ToLower().Replace(".map", ".ar")); //SpanUtil.Start(); //if (Application.platform == RuntimePlatform.WindowsEditor) //{ Profiler.BeginSample("LoadARFile"); MapAreaDisplay.Instance.LoadARFile(strMapName.ToLower().Replace(".map", ".ar")); Profiler.EndSample(); //} //SpanUtil.Stop(strMapName + " ar "); string strMPSName = strMapName.Replace(".map", ".mps").ToLower(); // 读取地表障碍信息 LoadObstacle(strMPSName); //SpanUtil.Stop(strMapName + " 地表障碍信息 "); } } else { Engine.Utility.Log.Error("MapSystem:IRenderSystem为空"); } Engine.Utility.EventEngine.Instance().DispatchEvent((int)(int)Client.GameEventID.ENTITYSYSTEM_ENTERMAP, mapID); }