protected override void Process() { var index = Volume.Index; _stoneData = new VoxelData(index.Add(Stone)); _dirtData = new VoxelData(index.Add(Dirt)); _grassData = new VoxelData(index.Add(Grass)); float radius = SurfaceLevel + MaxHeight; int chunkRadius = (int)MathF.Ceiling(radius / VoxelChunk.SIZE); for (int i = -chunkRadius; i < chunkRadius; i++) { for (int j = -chunkRadius; j < chunkRadius; j++) { for (int k = -chunkRadius; k < chunkRadius; k++) { var chunk = Volume.AddChunk(new Coords(i, j, k)); } } } Parallel.ForEach(Volume, GenerateChunk); }