private void SetUpperVoxels(IChunkColumn chunk) { for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { for (int y = chunk.GetHeighest() + 1; y < 255; y++) { chunk.SetSkyLight(x, y, z, 15); } } } }
/// <summary> /// Queues the initial lighting pass for a newly generated chunk. /// </summary> public void CalculateLighting(IChunkColumn chunk, bool skyLight = true, bool initial = false) { if (!chunk.SkyLightDirty) { return; } // Set voxels above max height to 0xFF if (initial) { SetUpperVoxels(chunk); } var coords = new ChunkCoordinates(chunk.X * 16, chunk.Z * 16); var min = new Vector3(coords.X, 0, coords.Z); var max = new Vector3(coords.X + 16, chunk.GetHeighest() + 2, coords.Z + 16); EnqueueOperation(new ChunkCoordinates(chunk.X, chunk.Z), new BoundingBox(min, max), skyLight, initial); }