예제 #1
0
        public VoxelHandle FindLand(
            ChunkManager Data,
            GlobalVoxelCoordinate Start,
            int Radius)
        {
            GlobalVoxelCoordinate landFound;

            if (VoxelHelpers.BreadthFirstSearch(Data, Start, Radius,
                                                coord =>
            {
                var v = new VoxelHandle(Data, coord);
                if (!v.IsValid || !v.IsEmpty || v.LiquidLevel > 0)
                {
                    return(false);
                }
                var below = new VoxelHandle(Data,
                                            new GlobalVoxelCoordinate(coord.X, coord.Y - 1, coord.Z));
                return(below.IsValid && !below.IsEmpty);
            },
                                                out landFound))
            {
                return(new VoxelHandle(Data, landFound));
            }
            return(VoxelHandle.InvalidHandle);
        }