public override void ServerDo(ClientConnectionWorker connectionWork) { List <int> viewEntities = connectionWork.player.viewEntities; list = new List <ClientEntityInfo>(viewEntities.Count); for (int i = 0; i < viewEntities.Count; i++) { ClientEntity entity = NetManager.Instance.server.entityManager.GetEntity(viewEntities[i]); list.Add(entity.GetClientEntityInfo()); } connectionWork.SendPackage(this); }
public override void ServerDo(ClientConnectionWorker connectionWork) { ClientEntity entity = NetManager.Instance.server.entityManager.GetEntity(aoId); if (entity != null && entity.viewPlayers.Contains(connectionWork.player.id)) { needRefresh = true; info = entity.GetClientEntityInfo(); } else { needRefresh = false; } connectionWork.SendPackage(this); }
public override void ServerDo(ClientConnectionWorker connectionWork) { if (NetManager.Instance.server.sceneManager.RefreshEntity(pos)) { List <int> listRefershEntity = new List <int>(); for (int i = 0; i < entities.Count; i++) { int aoId = AoIdManager.instance.getAoId(); ClientEntityInfo info = new ClientEntityInfo(); info.aoId = aoId; info.entityId = entities[i].id; info.type = entities[i].type; info.extData = entities[i].exData; info.position = entities[i].pos; info.roleId = connectionWork.player.id; NetManager.Instance.server.entityManager.InitEntity(info); listRefershEntity.Add(aoId); } //全部刷新完成后,通知持有该块的玩家更改刷新标志,并通知其刷新怪物 ChunkSignChangedPackage signChangedPackage = PackageFactory.GetPackage(PackageType.ChunkSignChanged) as ChunkSignChangedPackage; signChangedPackage.pos = pos; signChangedPackage.sign = NetManager.Instance.server.sceneManager.GetSign(pos); NetManager.Instance.server.sceneManager.BroadcastPlayerHasChunkPackage(connectionWork.player, pos, signChangedPackage, true); for (int i = 0; i < listRefershEntity.Count; i++) { ClientEntity clientEntity = NetManager.Instance.server.entityManager.GetEntity(listRefershEntity[i]); ClientEntityInfo clientEntityInfo = clientEntity.GetClientEntityInfo(); EntityJoinViewPackage entityJoinViewPackage = PackageFactory.GetPackage(PackageType.EntityJoinView) as EntityJoinViewPackage; entityJoinViewPackage.info = clientEntityInfo; for (int j = 0; j < clientEntity.viewPlayers.Count; j++) { ClientPlayer clientPlayer = NetManager.Instance.server.playerManager.GetPlayer(clientEntity.viewPlayers[j]); clientPlayer.worker.SendPackage(entityJoinViewPackage); } } // Debug.Log("请求刷新区块pos:" + pos.ToString() + "的entity成功,刷新数量:" + listRefershEntity.Count + " changedSign:" +signChangedPackage.sign); } }