Exemplo n.º 1
0
        private async void LoadOrGenerate(Chunk chunk)
        {
            var          savedValueTask = Universe?.SaveFile?.ReadAsync(StorageKey.Get("ChunkData", chunk.Pos));
            StorageValue savedValue     = savedValueTask == null ? null : await savedValueTask;

            if (savedValue != null)
            {
                var chunkData = savedValue.Deserialize <ChunkData>();
                if (chunkData != null)
                {
                    chunk.PasteChunkData(savedValue.Deserialize <ChunkData>());
                }
            }
            else if (Generator != null)
            {
                Generator.CreateChunk(chunk);
            }
        }
Exemplo n.º 2
0
        private void CreateChunk(Chunk chunk)
        {
            var chunkPos = chunk.Pos;

            var tempChunk = new Chunk(null, chunkPos);

            var cornerPos = (BlockPos)chunkPos;

            for (int x = 0; x < GeometryConstants.ChunkSize; ++x)
            {
                long wx = cornerPos.X + x;
                for (int z = 0; z < GeometryConstants.ChunkSize; ++z)
                {
                    long wz = cornerPos.Z + z;

                    var dirtHeight     = (long)(_dirtNoise[wx, wz] * 2.5 - 8);
                    var mountainHeight = (long)(_mountainNoise[wx, wz] * 8 + _mountainDetailNoise[wx, wz] * 3 - 10);

                    for (int y = 0; y < GeometryConstants.ChunkSize; ++y)
                    {
                        long wy = cornerPos.Y + y;

                        if (wy < mountainHeight)
                        {
                            tempChunk[x, y, z] = 2; // Rock
                        }
                        else if (wy < dirtHeight)
                        {
                            tempChunk[x, y, z] = 1; // Dirt
                        }
                    }
                }
            }

            tempChunk.IsCreated = true;

            chunk.PasteChunkData(tempChunk.GetChunkData());
        }
Exemplo n.º 3
0
 private async void LoadOrGenerate(Chunk chunk)
 {
     var savedValueTask = Universe?.SaveFile?.ReadAsync(StorageKey.Get("ChunkData", chunk.Pos));
     StorageValue savedValue = savedValueTask == null ? null : await savedValueTask;
     if (savedValue != null)
     {
         var chunkData = savedValue.Deserialize<ChunkData>();
         if (chunkData != null)
         {
             chunk.PasteChunkData(savedValue.Deserialize<ChunkData>());
         }
     }
     else if (Generator != null)
     {
         Generator.CreateChunk(chunk);
     }
 }