public void StitchBlockSkyLight(IBoundedLitBlockCollection chunk, BlockCollectionEdge edge) { int xdim = _xdim; int ydim = _ydim; int zdim = _zdim; if (chunk.XDim != xdim || chunk.YDim != ydim || chunk.ZDim != zdim) { throw new InvalidOperationException("BlockLight must have same dimensions to be stitched"); } switch (edge) { case BlockCollectionEdge.EAST: for (int x = 0; x < xdim; x++) { for (int y = 0; y < ydim; y++) { TestSkyLight(chunk, x, y, 0, x, y, zdim - 1); } } break; case BlockCollectionEdge.NORTH: for (int z = 0; z < zdim; z++) { for (int y = 0; y < ydim; y++) { TestSkyLight(chunk, 0, y, z, xdim - 1, y, z); } } break; case BlockCollectionEdge.WEST: for (int x = 0; x < xdim; x++) { for (int y = 0; y < ydim; y++) { TestSkyLight(chunk, x, y, zdim - 1, x, y, 0); } } break; case BlockCollectionEdge.SOUTH: for (int z = 0; z < zdim; z++) { for (int y = 0; y < ydim; y++) { TestSkyLight(chunk, xdim - 1, y, z, 0, y, z); } } break; } UpdateBlockSkyLight(); }
/// <inheritdoc/> public void StitchSkyLight(IBoundedLitBlockCollection blockset, BlockCollectionEdge edge) { _lightManager.StitchBlockSkyLight(blockset, edge); _dirty = true; }