void Update() { FreshQueue(); if (!m_IsCanShow) { return; } if (!GM.AssetManager.IsIdle) { return; } if (m_NpcQueue != null && m_NpcQueue.Count > 0) { NpcDelegate npcdata = m_NpcQueue.Dequeue(); if (npcdata != null) { if (npcdata.sceneid.Equals(m_CurrentSceneID) && m_ManagedNpcs != null && m_ManagedNpcs.ContainsKey(npcdata.locator)) { Vector3 v3; Quaternion rot; switch (npcdata.role) { case NPC_ROLE.GHOST: v3 = npcdata.pos; rot = npcdata.quater; break; default: GameObject locator_obj = LocatorManager.Instance.GetLocator(npcdata.locator); if (locator_obj == null) { EB.Debug.LogWarning(string.Format("No available locator data for npc at locator [{0}]", npcdata.locator)); return; } v3 = locator_obj.transform.position; rot = locator_obj.transform.rotation; break; } if (npcdata.key != null) { //夺宝奇兵等级未开放或该区服未开放判断 if (npcdata.role == NPC_ROLE.GHOST && ( !Hotfix_LT.Data.FuncTemplateManager.Instance.GetFunc(10073).IsConditionOK() || !Hotfix_LT.Data.EventTemplateManager.Instance.GetRealmIsOpen("main_land_ghost_start"))) { EB.Debug.LogWarning("NPC_ROLE.GHOST Return! (10073).IsConditionOK()——{0}", Hotfix_LT.Data.FuncTemplateManager.Instance.GetFunc(10073).IsConditionOK() + ";GetRealmIsOpen——" + Hotfix_LT.Data.EventTemplateManager.Instance.GetRealmIsOpen("main_land_ghost_start")); return; } else if (m_GroupCellManager != null && m_GroupCellManager.IsCellShowing(npcdata.key)) { if (!npcdata.preloaded) { if (m_CurrentSceneLogic != null) { m_CurrentSceneLogic.PreloadAsync(npcdata.modelname, (success) => { npcdata.preloaded = success; m_NpcQueue.Enqueue(npcdata); }); } else { EB.Debug.LogError("CurrentSceneLogic is Null"); } } else if (m_ManagedNpcs != null && !m_ManagedNpcs[npcdata.locator].created) { m_ManagedNpcs[npcdata.locator].created = true; if (m_CurrentSceneLogic != null) { #region 异步加载一个NPC m_CurrentSceneLogic.SpawnNpcAsync(npcdata.locator, npcdata.modelname, npcdata.role, v3, rot, ec => { if (ec != null) { Player.EnemyHotfixController ehc = ec.transform.GetMonoILRComponent <Player.EnemyHotfixController>(); ehc.SetBarHudState(eHeadBarHud.FightStateHud, null, m_ManagedNpcs[npcdata.locator].isfighting); ehc.Role = npcdata.role; ehc.Attr = npcdata.attr; ehc.SetNpcName(m_CurrentSceneLogic.CurrentSceneName); } }); #endregion } else { EB.Debug.LogError("CurrentSceneLogic is Null"); } } } } else if (m_GroupCellManager != null) { GroupCellKey key = m_GroupCellManager.ObjectIn(npcdata.locator, v3); npcdata.key = key; if (m_GroupCellManager.IsCellShowing(npcdata.key)) { m_NpcQueue.Enqueue(npcdata); } } } else { } } } if (m_GroupCellManager != null) { var go = PlayerManager.LocalPlayerGameObject(); m_GroupCellManager.Update(go != null ? go.transform : null); } }
void Update() { if (m_MaxManagedPlayer < 0) { CalcMaxPlayer(); } else { if (needSyncNumToServer) { needSyncNumToServer = false; } } FreshQueue(); if (!m_IsCanShow) { return; } if (!GM.AssetManager.IsIdle) { return; } if (m_PlayerQueue.Count > 0) { PlayerDelegate playerdata = m_PlayerQueue.Dequeue(); if (playerdata != null) { if (playerdata.sceneid != m_CurrentSceneID) { //#if PRINT_PLAYER_SYNC_DEBUG // EB.Debug.LogWarning("Player not this scene uid=" + playerdata.id); //#endif m_ManagedPlayers.Remove(playerdata.id); } else if (m_ManagedPlayers.ContainsKey(playerdata.id)) { if (!playerdata.preloaded) { if (m_CurrentSceneLogic != null) { m_CurrentSceneLogic.PreloadAsync(playerdata.id, (success) => { playerdata.preloaded = success; m_PlayerQueue.Enqueue(playerdata); }); } else { EB.Debug.LogError("CurrentSceneLogic is Null"); } } else if (!m_ManagedPlayers[playerdata.id].created) { m_ManagedPlayers[playerdata.id].created = true; if (m_CurrentSceneLogic != null) { m_CurrentSceneLogic.CreateOtherPlayer(playerdata.pos, playerdata.quater, playerdata.id); } else { EB.Debug.LogError("CurrentSceneLogic is Null"); } } } //#if PRINT_PLAYER_SYNC_DEBUG // CheckConsistent(); //#endif } } else { MatchPlayersToMaxManagerPlayer(); } }