void ClearPreLoadEntity() { if (m_preLoadDic != null) { var iter = m_preLoadDic.GetEnumerator(); while (iter.MoveNext()) { var objArray = iter.Current.Value; for (int i = 0; i < objArray.Length; i++) { Engine.IRenderObj obj = objArray[i]; if (obj != null) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { if (rs.CanRemovePreLoad(obj.GetID())) { rs.RemoveRenderObj(obj); } } } } objArray = null; } m_preLoadDic.Clear(); } }
public void ShowFxTips(uint effectResId) { m_trans_fxRoot.gameObject.SetActive(true); table.ResourceDataBase rdb = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(effectResId); if (rdb == null) { return; } Engine.IRenderSystem es = Engine.RareEngine.Instance().GetRenderSystem(); if (es == null) { return; } string path = rdb.strPath; Engine.IEffect effect = null; if (es.CreateEffect(ref path, ref effect)) { Transform transf = effect.GetNodeTransForm(); if (transf == null) { return; } transf.parent = m_trans_fxRootContent; transf.localPosition = Vector3.zero; m_trans_fxRootContent.SetChildLayer(LayerMask.NameToLayer("UI")); } }
Transform CreateEffect(int num = 1) { Engine.IEffect m_effect = null; for (int i = 0; i < num; i++) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { table.ResourceDataBase rd = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(50007); if (rd == null) { return(null); } string path = rd.strPath; bool success = rs.CreateEffect(ref path, ref m_effect, OnCreateEffectEvent, Engine.TaskPriority.TaskPriority_Immediate); if (success) { m_effect.GetNode().SetScale(Vector3.one); m_effect.GetNode().GetTransForm().SetChildLayer(LayerMask.NameToLayer("UI")); } } } if (m_effect != null) { return(m_effect.GetNodeTransForm()); } return(null); }
public void DestroyFx() { if (rs == null) { rs = Engine.RareEngine.Instance().GetRenderSystem(); } // transform.DetachChildren(); Engine.IEffect effect = rs.GetEffect(m_effectid); if (effect != null) { rs.RemoveEffect(effect); } if (m_hitNode != null) { FollowFxNode node = m_hitNode as FollowFxNode; if (node != null) { node.FreeToNodePool(); } } //m_effectid = 0; m_skillId = 0; m_attacker = null; m_targetObj = null; m_SkillTarget = null; // SkillEffectHelper.Instance.FreeFollowGameObject(gameObject); bDestory = true; bStart = false; // DestroyImmediate(gameObject); }
public void AddParticle(uint resId, Action <Engine.IEffect> oncomplete = null, Engine.EffectCallback endCallback = null) { //ReleaseParticle(); m_uResId = resId; Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { table.ResourceDataBase rd = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(resId); if (rd == null) { Engine.Utility.Log.Error("ID为{0}的资源为空", resId); return; } string path = rd.strPath; if (string.IsNullOrEmpty(path)) { return; } m_oncomplete = oncomplete; bool success = rs.CreateEffect(ref path, ref m_effect, OnCreateEffectEvent, Engine.TaskPriority.TaskPriority_Immediate, cb: endCallback); if (success) { UpdateEffectWidget(); } } }
//------------------------------------------------------------------------------------------------------- private void MoveDir() { if (m_Owner == null) { return; } Vector3 pos = m_Owner.GetPos(); Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } m_curScene = rs.GetActiveScene(); if (m_curScene == null) { return; } // 先设置人物旋转 Quaternion rotate = new Quaternion(); rotate.eulerAngles = new Vector3(0, m_param.m_dir, 0); Matrix4x4 mat = new Matrix4x4(); mat.SetTRS(Vector3.zero, rotate, Vector3.one); m_dir = mat.GetColumn(2); if (!m_bIgnoreMoveAction) { m_Owner.PlayAction(m_param.strRunAct, 0, m_param.m_speed); } stEntityBeginMove move = new stEntityBeginMove(); move.uid = m_Owner.GetUID(); Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_ENTITYBEGINMOVE, move); if (!m_bMoving) { Engine.Utility.Log.Error("MoveDir----------- {0}-------------------------------------", m_param.m_dir); m_vLastPos = pos; m_lastSyncPos = m_vLastPos; m_bMoving = true; if (!m_bIgnoreMoveAction) { m_Owner.PlayAction(m_param.strRunAct, 0, m_param.m_speed); } //Engine.Utility.TimerAxis.Instance().KillTimer(0, this); //Engine.Utility.TimerAxis.Instance().SetTimer(0, 33, this, TimerAxis.INFINITY_CALL, "EntityMove"); m_LastTime = Engine.Utility.TimeHelper.GetTickCount(); } }
///////////////////////////////////////////////////////////////////////////////////////////////////////// public bool Create(string strRenderObj, int nSize, GameObject parentObj) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { Engine.Utility.Log.Error("获取RenderSystem失败!"); return(false); } // 对象创建 if (m_Root == null) { m_Root = new GameObject("RTObj"); if (parentObj != null) { m_Root.transform.parent = parentObj.transform; } } // m_RenderObj = null; rs.CreateRenderObj(ref strRenderObj, ref m_RenderObj, CreateRenderObjEvent, null, Engine.TaskPriority.TaskPriority_Normal); if (m_RenderObj == null) { Engine.Utility.Log.Error("创建Renderobj失败{0}!", strRenderObj); return(false); } m_RenderObj.SetLayer((int)Engine.RenderLayer.ShowModel); // 默认播放站立动作 m_RenderObj.Play(Client.EntityAction.Stand); // CreateCamera Camera cam = CreateCamera(); // m_RenderText = new RenderTexture(nSize, nSize, 24, RenderTextureFormat.ARGB32); m_RenderText = RenderTexture.GetTemporary(nSize, nSize, 24, RenderTextureFormat.ARGB4444); if (m_RenderText == null) { return(false); } cam.targetTexture = m_RenderText; // 对象挂在父节点上 if (m_Root != null) { m_RenderObj.GetNode().GetTransForm().parent = m_Root.transform; m_Camera.transform.parent = m_Root.transform; } return(true); }
//------------------------------------------------------------------------------------------------------- private void CloseTerrainPos(ref Vector3 curPos) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } // 再计算移动速度 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; }
public void ReleaseParticle() { m_uResId = 0; if (null != m_effect) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.RemoveEffect(m_effect); } m_effect = null; } }
public SequencerManager() { m_RenderSystem = Engine.RareEngine.Instance().GetRenderSystem(); //任务触发 Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.TASK_DONE, OnEvent); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.TASK_ACCEPT, OnEvent); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.TASK_CANSUBMIT, OnEvent); Engine.Utility.EventEngine.Instance().AddEventListener((int)Client.GameEventID.CHAPTER_EFFECT_END, OnChapterEnd); //table.SequencerData List <table.SequencerData> tableList = GameTableManager.Instance.GetTableList <table.SequencerData>(); for (int i = 0; i < tableList.Count; i++) { table.SequencerData data = tableList[i]; switch (data.TriggerType) { case (int)TriggerType.task: m_TaskTriggerType.Add(data); break; case (int)TriggerType.chapterEnd: m_ChapterType.Add(data); break; } } List <table.ChapterDabaBase> lstchapter = GameTableManager.Instance.GetTableList <table.ChapterDabaBase>(); table.ChapterDabaBase database = null; for (int i = 0, imax = lstchapter.Count; i < imax; i++) { database = lstchapter[i]; switch ((TriggerType)database.TriggerType) { case TriggerType.task: m_lstChapterTaskTrigger.Add(database); break; default: break; } } }
private object SetPos(object param) { if (m_Owner != null) { Vector3 pos = (Vector3)param; Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return(null); } // 取下地表高度 // 再计算移动速度 Engine.IScene curScene = rs.GetActiveScene(); if (curScene == null) { return(null); } Engine.TerrainInfo info; if (curScene.GetTerrainInfo(ref pos, out info)) { //if (pos.y < info.pos.y) { pos.y = info.pos.y;// +0.08f; // 往上提一个距离 } } //if (pos.y <= 10f) //{ // if (!EntitySystem.m_ClientGlobal.IsMainPlayer(m_Owner)) // { // Vector3 mainPos = EntitySystem.m_ClientGlobal.MainPlayer.GetPos(); // pos.y = mainPos.y; // } //} //if (EntitySystem.m_ClientGlobal.IsMainPlayer(m_Owner)) //{ // Engine.Utility.Log.LogGroup("XXF", "Entity.SetPos ({0},{1})", pos.x,-pos.z); //} m_Owner.SetPos(ref pos); } else { Engine.Utility.Log.LogGroup("XXF", "Entity.SetPos m_Owner is null"); } return(null); }
//------------------------------------------------------------------------------------------------------- /** * @brief 用来处理游戏中退回到登录或者选人界面 或者地图时使用 * @param bFlag 标识是否清理主角 true清理主角 */ public void Clear(bool bFlag = false) { Engine.IRenderSystem renderSys = Engine.RareEngine.Instance().GetRenderSystem(); if (renderSys != null && bFlag) { // 设置主Camera string strCameraName = "MainCamera"; Engine.ICamera cam = renderSys.GetCamera(ref strCameraName); if (cam != null) { cam.Enable(false); } } // 停止背景音乐 Engine.IAudio audio = Engine.RareEngine.Instance().GetAudio(); if (audio != null && bFlag) { audio.StopMusic(); } if (bFlag) { CmdManager.Instance().Clear(); } if (m_ControllerSys != null) { m_ControllerSys.GetCombatRobot().Stop(true); } if (MainPlayer != null) { MainPlayer.SendMessage(EntityMessage.EntityCommand_StopMove, MainPlayer.GetPos()); } if (m_EntitySys != null) { m_EntitySys.Clear(bFlag); } if (m_MapSystem != null) { m_MapSystem.ExitMap(); } MainPlayer = null; Engine.RareEngine.Instance().UnloadUnusedResources(); }
public void DestroyFx() { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } Engine.IEffect effect = rs.GetEffect(m_effectid); if (effect != null) { rs.RemoveEffect(effect); } bPlay = false; if (m_placeNode != null) { m_placeNode.FreeToNodePool(); } }
public override void FireEvent() { if (!AffectedObject) { return; } if (!Application.isPlaying && Application.isEditor) { } else { table.MapDataBase data = GameTableManager.Instance.GetTableItem <table.MapDataBase>(sceneID); if (data == null) { return; } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(data.dwResPath); if (resDB == null) { return; } Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { string str = resDB.strPath; Engine.IScene scene = rs.EnterScene(ref str, SequencerManager.Instance()); if (scene != null) { ///¼ÓÔس¡¾° SequencerManager.Instance().Pause(); scene.StartLoad(Vector3.one); //±£´æÏÂmapid Client.IMapSystem map = Client.ClientGlobal.Instance().GetMapSystem(); SequencerManager.Instance().m_MapID = map.GetMapID(); } } } }
/// <summary> /// 主角复活 /// </summary> void MainPlayerRelive() { IPlayer mainPlyer = Client.ClientGlobal.Instance().MainPlayer; if (mainPlyer != null) { if (Client.ClientGlobal.Instance().MainPlayer.IsDead()) { DataManager.Manager <UIPanelManager>().HidePanel(PanelID.ReLivePanel); Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.EnableGray(false); } mainPlyer.SendMessage(EntityMessage.EntityCommand_SetPos, mainPlyer.GetPos()); mainPlyer.ChangeState(CreatureState.Normal); } } }
//------------------------------------------------------------------------------------------------------- public bool Create(Client.IPlayer player, int nSize, GameObject parentObj, Client.SkillSettingState eState = Client.SkillSettingState.StateOne) { if (player == null) { return(false); } Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { Engine.Utility.Log.Error("获取RenderSystem失败!"); return(false); } // 对象创建 if (m_Root == null) { m_Root = new GameObject("RTObj"); if (parentObj != null) { m_Root.transform.parent = parentObj.transform; } } // m_RenderObj = null; Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { return(false); } List <GameCmd.SuitData> lstSuit = null; player.GetSuit(out lstSuit); return(Create(lstSuit, player.GetProp((int)PlayerProp.Job), player.GetProp((int)PlayerProp.Sex), nSize, parentObj, eState)); }
public void Release() { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { Engine.Utility.Log.Error("获取RenderSystem失败!"); return; } if (m_PuppetObj != null) { ClientGlobal.Instance().GetEntitySystem().RemoveEntity(m_PuppetObj); m_PuppetObj = null; m_RenderObj = null; } if (m_RenderObj != null) { rs.RemoveRenderObj(m_RenderObj); } if (m_Camera != null) { GameObject.DestroyImmediate(m_Camera); } if (m_RenderText != null) { m_RenderText.Release(); GameObject.DestroyImmediate(m_RenderText); m_RenderText = null; } if (m_Root != null) { GameObject.DestroyImmediate(m_Root); m_Root = null; } }
public void DestroyFx() { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } Engine.IEffect effect = rs.GetEffect(m_effectid); if (effect != null) { rs.RemoveEffect(effect); } Destroy(gameObject); if (m_hitNode != null) { ArrowFxNode node = m_hitNode as ArrowFxNode; if (node != null) { node.FreeToNodePool(); } } }
//正常播放完成 public void PlaybackFinished(WellFired.USSequencer sequencer) { m_IsPlay = false; if (m_SequencerCamera != null) { GameObject obj = GameObject.Find("MainCamera"); Camera camera = obj.GetComponent <Camera>(); if (camera != m_SequencerCamera) { camera.enabled = true; } } m_SequencerCamera = null; m_SequencerData = null; // 取消回调 if (sequencer != null) { sequencer.PlaybackFinished -= this.PlaybackFinished; sequencer.BeforeUpdate -= this.BeforeUpdate; } try { //显示npc Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es != null) { es.ShowEntity(true); } //删除剧情gameobject if (m_SequencerGameObject != null) { GameObject.Destroy(m_SequencerGameObject); m_SequencerGameObject = null; } Debug.Log("清理剧情对象"); //清理剧情对象 ClearSequencerTempObject(); //打开声音 Client.ClientGlobal.Instance().MuteGameSound(false); } catch { goto Exit0; } Exit0: //隐藏提示 TipsManager.Instance.EnableTips(true); //DataManager.Manager<UIPanelManager>().ShowStoryCachePanel(); Debug.Log("剧情结束显示UI"); RoleStateBarManager.ShowHeadStatus(); //剧情结束隐藏黑边 DataManager.Manager <UIPanelManager>().HideStory(); Debug.Log("剧情结束隐藏黑边"); Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.STORY_PLAY_OVER, null); //却换到原场景 Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (m_MapID != 0) { // 剧情播放完毕加载原场景 table.MapDataBase data = GameTableManager.Instance.GetTableItem <table.MapDataBase>(m_MapID); if (data == null) { return; } table.ResourceDataBase resDB = GameTableManager.Instance.GetTableItem <table.ResourceDataBase>(data.dwResPath); if (resDB == null) { return; } if (rs != null) { string str = resDB.strPath; Engine.IScene scene = rs.EnterScene(ref str, SequencerManager.Instance()); if (scene != null) { ///加载场景 SequencerManager.Instance().Pause(); scene.StartLoad(Vector3.one); } } m_MapID = 0; } }
public bool Create(List <GameCmd.SuitData> lstSuit, int nJob, int nSex, int nSize, GameObject parentObj, SkillSettingState eState = SkillSettingState.StateOne) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { Engine.Utility.Log.Error("获取RenderSystem失败!"); return(false); } // 对象创建 if (m_Root == null) { m_Root = new GameObject("RTObj"); if (parentObj != null) { m_Root.transform.parent = parentObj.transform; } } // m_RenderObj = null; Client.IEntitySystem es = Client.ClientGlobal.Instance().GetEntitySystem(); if (es == null) { return(false); } Client.EntityCreateData data = new Client.EntityCreateData(); data.ID = ++s_uPuppetID; data.strName = ""; //int speed = player.GetProp((int)WorldObjProp.MoveSpeed); data.PropList = new EntityAttr[(int)PuppetProp.End - (int)EntityProp.Begin]; int index = 0; data.PropList[index++] = new EntityAttr((int)PuppetProp.Job, nJob); data.PropList[index++] = new EntityAttr((int)PuppetProp.Sex, nSex); //data.PropList[index++] = new EntityAttr((int)EntityProp.BaseID, 0); //data.PropList[index++] = new EntityAttr((int)WorldObjProp.MoveSpeed, speed); data.eSkillState = eState; data.bViewModel = true; // 处理时装外观数据 EntityViewProp[] propList = new EntityViewProp[(int)Client.EquipPos.EquipPos_Max]; index = 0; propList[index++] = new EntityViewProp((int)Client.EquipPos.EquipPos_Body, 0); propList[index++] = new EntityViewProp((int)Client.EquipPos.EquipPos_Weapon, 0); if (lstSuit.Count > 0) { for (int i = 0; i < lstSuit.Count; ++i) { if (lstSuit[i] == null) { continue; } int pos = GetPropPos((Client.EquipPos)lstSuit[i].suit_type, propList); if (pos >= 0) { propList[pos] = new EntityViewProp((int)lstSuit[i].suit_type, (int)lstSuit[i].baseid); } else { Client.EquipPos equipPos = (Client.EquipPos)lstSuit[i].suit_type; propList[index++] = new EntityViewProp((int)equipPos, (int)lstSuit[i].baseid); } } } data.ViewList = propList; data.nLayer = LayerMask.NameToLayer("ShowModel"); m_PuppetObj = es.CreateEntity(Client.EntityType.EntityType_Puppet, data, true) as Client.IPuppet; if (m_PuppetObj == null) { Engine.Utility.Log.Error("创建Renderobj失败{0}!", ""); return(false); } m_RenderObj = m_PuppetObj.renderObj; if (m_RenderObj == null) { return(false); } // 默认播放站立动作 m_RenderObj.Play(Client.EntityAction.Stand); m_RenderObj.SetLayer((int)Engine.RenderLayer.ShowModel); // showModel // CreateCamera Camera cam = CreateCamera(); m_RenderText = new RenderTexture(nSize, nSize, 24, RenderTextureFormat.ARGB32); if (m_RenderText == null) { return(false); } cam.targetTexture = m_RenderText; // 对象挂在父节点上 if (m_Root != null) { m_RenderObj.GetNode().GetTransForm().parent = m_Root.transform; m_Camera.transform.parent = m_Root.transform; } return(true); }
private void OnEvent(int nEventID, object param) { // 地表没有创建成功的时候,就已经收到了角色和NPC的创建 这里重新设置位置和地表做碰撞 if (nEventID == (int)GameEventID.SYSTEM_LOADSCENECOMPELETE) { //List<IPlayer> lstPlayer; FindAllEntity <IPlayer>(ref lstPlayer); for (int i = 0; i < lstPlayer.Count; ++i) { Vector3 pos = lstPlayer[i].GetPos(); lstPlayer[i].SendMessage(EntityMessage.EntityCommand_SetPos, (object)pos); } lstPlayer.Clear(); //List<INPC> lstNPC; FindAllEntity <INPC>(ref lstNPC); for (int i = 0; i < lstNPC.Count; ++i) { Vector3 pos = lstNPC[i].GetPos(); lstNPC[i].SendMessage(EntityMessage.EntityCommand_SetPos, (object)pos); } lstNPC.Clear(); //List<IBox> lstBox; FindAllEntity <IBox>(ref lstBox); for (int i = 0; i < lstBox.Count; ++i) { Vector3 pos = lstBox[i].GetPos(); pos.y += 0.2f; lstBox[i].SendMessage(EntityMessage.EntityCommand_SetPos, (object)pos); } lstBox.Clear(); //List<IRobot> lstRobot; FindAllEntity <IRobot>(ref lstRobot); for (int i = 0; i < lstRobot.Count; ++i) { Vector3 pos = lstRobot[i].GetPos(); lstRobot[i].SendMessage(EntityMessage.EntityCommand_SetPos, (object)pos); } lstRobot.Clear(); // 请求同步移动时间 ReqMoveServerTime(); } else if (nEventID == (int)GameEventID.RECONNECT_SUCESS) // 重新连接成功 { stReconnectSucess st = (stReconnectSucess)param; if (st.isLogin) { Clear(false); // 不清理除主角 // 请求同步移动时间 ReqMoveServerTime(); } else {//强制同步 GameCmd.stUserMoveMoveUserCmd_C cmd = new GameCmd.stUserMoveMoveUserCmd_C(); cmd.client_time = 0; List <GameCmd.Pos> list = new List <GameCmd.Pos>(); GameCmd.Pos pp = new GameCmd.Pos(); pp.x = 0; pp.y = 0; list.Add(pp); cmd.poslist.AddRange(list); m_ClientGlobal.netService.Send(cmd); } } else if (nEventID == (int)GameEventID.NETWORK_CONNECTE_CLOSE)// 网络断开 { if (m_ClientGlobal.MainPlayer != null) { m_ClientGlobal.MainPlayer.SendMessage(EntityMessage.EntityCommand_RemoveLinkAllEffect); } } else if (nEventID == (int)GameEventID.ENTITYSYSTEM_ENTITYDEAD) // 实体死亡 { stEntityDead ed = (stEntityDead)param; if (m_ClientGlobal.IsMainPlayer(ed.uid)) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.EnableGray(true); } } IEntity en = FindEntity(ed.uid); if (en != null) { AddEffectOnEntity(en, false); } } else if (nEventID == (int)GameEventID.ENTITYSYSTEM_RELIVE) { stEntityRelive ed = (stEntityRelive)param; if (m_ClientGlobal.IsMainPlayer(ed.uid)) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.EnableGray(false); } } IEntity en = FindEntity(ed.uid); if (en != null) { AddEffectOnEntity(en, true); } } else if (nEventID == (int)GameEventID.PLAYER_LOGIN_SUCCESS) { Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs != null) { rs.EnableGray(false); } // 请求同步移动时间 ReqMoveServerTime(); } else if (nEventID == (int)GameEventID.ENTITYSYSTEM_LEAVEMAP) // 离开地图 { // 清理地图上所有对象 Clear(false); // 切地图时让主角停止移动 IPlayer mainPlayer = EntitySystem.m_ClientGlobal.MainPlayer; if (mainPlayer != null) { bool ismoving = (bool)mainPlayer.SendMessage(Client.EntityMessage.EntityCommand_IsMove, null); if (ismoving) { mainPlayer.SendMessage(Client.EntityMessage.EntityCommand_StopMove, mainPlayer.GetPos()); } } } else if (nEventID == (int)GameEventID.ENTITYSYSTEM_CHANGEAREA) // 区域变化 动作处理 { stEntityChangeArea changeArea = (stEntityChangeArea)param; IEntity en = FindEntity(changeArea.uid); if (en != null && en.GetEntityType() == EntityType.EntityType_Player) { string strCurAni = (string)en.SendMessage(EntityMessage.EntityCommand_GetCurAni, null); bool bChangeArea = false; if (changeArea.eType == MapAreaType.Safe || changeArea.eType == MapAreaType.Fish) { if (strCurAni == EntityAction.Stand_Combat) { strCurAni = EntityAction.Stand; bChangeArea = true; } if (strCurAni == EntityAction.Run_Combat) { strCurAni = EntityAction.Run; bChangeArea = true; } } else { if (strCurAni == EntityAction.Stand) { strCurAni = EntityAction.Stand_Combat; bChangeArea = true; } if (strCurAni == EntityAction.Run) { strCurAni = EntityAction.Run_Combat; bChangeArea = true; } } if (bChangeArea) { PlayAni anim_param = new PlayAni(); anim_param.strAcionName = strCurAni; anim_param.fSpeed = 1; anim_param.nStartFrame = 0; anim_param.nLoop = -1; anim_param.fBlendTime = 0.1f; en.SendMessage(EntityMessage.EntityCommand_PlayAni, anim_param); } } } else if (nEventID == (int)GameEventID.ENTITYSYSTEM_CREATEENTITY) { stCreateEntity create = (stCreateEntity)param; IEntity en = FindEntity(create.uid); if (en != null) { EntityManager.Instance().OnCreateEntity(en); } } }
private void OnCreateRenderObj(Engine.IRenderObj obj, object param) { if (m_EntityView == null) { return; } if (m_EntityView.GetNode() == null) { Engine.Utility.Log.Error("OnCreateRenderObj m_EntityView.GetNode() is null"); return; } int nID = GetProp((int)EntityProp.BaseID); var table_data = GameTableManager.Instance.GetTableItem <table.ItemDataBase>((uint)nID); if (table_data != null) { m_EntityView.GetNode().SetScale(UnityEngine.Vector3.one * table_data.scale * 0.01f); } if (nID == 60001) { UnityEngine.Vector3 pos = GetPos(); pos.y += 0.05f; SendMessage(EntityMessage.EntityCommand_SetPos, (object)pos); } // 根据全局配置设置阴影 //int nShadowLevel = EntitySystem.m_ClientGlobal.gameOption.GetInt("Render", "shadow", 1); //m_EntityView.SetShadowLevel(nShadowLevel); Engine.IRenderSystem rs = Engine.RareEngine.Instance().GetRenderSystem(); if (rs == null) { return; } // 取下地表高度 // 再计算移动速度 Engine.IScene curScene = rs.GetActiveScene(); if (curScene == null) { return; } Material mat = curScene.GetBoxMat(); if (mat != null) { if (m_EntityView.GetMaterial() == null) { return; } Texture tex = m_EntityView.GetMaterial().mainTexture; mat.mainTexture = tex; m_EntityView.ApplySharedMaterial(mat); } Vector3 currPos = GetPos(); SetPos(ref currPos); Client.stCreateEntity createEntity = new Client.stCreateEntity(); createEntity.uid = GetUID(); Engine.Utility.EventEngine.Instance().DispatchEvent((int)GameEventID.ENTITYSYSTEM_CREATEENTITY, createEntity); // if (!m_sendPickMsg && CanAutoPick()) // { // m_sendPickMsg = true; // Engine.Utility.EventEngine.Instance().DispatchEvent((int)Client.GameEventID.ROBOTCOMBAT_PICKUPITEM, new Client.stPickUpItem() { itemid = GetID(), state = 0 }); // } }