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);
        }
Esempio n. 2
0
        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);
            }
        }