Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
 /// <inheritdoc/>
 public void StitchSkyLight(IBoundedLitBlockCollection blockset, BlockCollectionEdge edge)
 {
     _lightManager.StitchBlockSkyLight(blockset, edge);
     _dirty = true;
 }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
 /// <inheritdoc/>
 public void StitchSkyLight(IBoundedLitBlockCollection blockset, BlockCollectionEdge edge)
 {
     _lightManager.StitchBlockSkyLight(blockset, edge);
     _dirty = true;
 }