Esempio n. 1
0
        /*
         * public int GetMetadata(BlockPos pos)
         * {
         *  Chunk chunk = GetChunk(ChunkPos.FromWorldSpace(pos));
         *  if (chunk == null || !chunk.HasData)
         *      return -1;
         *
         *  return chunk.GetMetadata(ChunkPos.ToChunkLocal(pos));
         * }*/

        /*
         * public void SetMetadata(BlockPos pos, int meta)
         * {
         *  Chunk chunk = GetChunk(ChunkPos.FromWorldSpace(pos));
         *  if (chunk == null || !chunk.HasData)
         *      return;
         *
         *  chunk.SetMetadata(ChunkPos.ToChunkLocal(pos), meta);
         * }*/

        public override void Update(Vector3 playerPos, int renderDistance)
        {
            _initalLoad = false;

            ChunkPos playerChunkPos = ChunkPos.FromWorldSpace(playerPos);

            for (int z = -renderDistance; z <= renderDistance; z++)
            {
                for (int x = -renderDistance; x <= renderDistance; x++)
                {
                    ChunkPos pos = new ChunkPos(playerChunkPos.x + x, playerChunkPos.z + z);

                    if (pos.DistanceTo(playerPos.Xz) < renderDistance * Chunk.ChunkSize)
                    {
                        if (GetChunk(pos) == null)
                        {
                            SharpCraft.Instance.ServerHandler.RequestChunk(pos);
                        }
                    }
                }
            }

            foreach (Chunk chunk in Chunks.Values)
            {
                chunk.Update();

                if (chunk.Pos.DistanceTo(playerPos.Xz) > renderDistance * Chunk.ChunkSize + 50)
                {
                    UnloadChunk(chunk.Pos);
                }
            }

            UpdateEntities();
        }