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); } }
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()); }
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); } }