added bounds checking for tiles during scan
fixes the problem where tiles outside the bounds (which can happen with -z) would cause tiles to be rendered along the border even though they have no chunks, causing a warning.
This commit is contained in:
@@ -518,21 +518,35 @@ class QuadtreeGen(object):
|
|||||||
#logging.debug("Looking at chunk %s,%s", chunkcol, chunkrow)
|
#logging.debug("Looking at chunk %s,%s", chunkcol, chunkrow)
|
||||||
|
|
||||||
# find tile coordinates
|
# find tile coordinates
|
||||||
tilex = chunkcol - chunkcol % 2
|
tilecol = chunkcol - chunkcol % 2
|
||||||
tiley = chunkrow - chunkrow % 4
|
tilerow = chunkrow - chunkrow % 4
|
||||||
|
|
||||||
if chunkcol % 2 == 0:
|
if chunkcol % 2 == 0:
|
||||||
# This chunk is half-in one column and half-in another column.
|
# This chunk is half-in one column and half-in another column.
|
||||||
# tilex is the right one, also do tilex-2, the left one
|
# tilecol is the right one, also do tilecol-2, the left one
|
||||||
x_tiles = 2
|
x_tiles = 2
|
||||||
else:
|
else:
|
||||||
x_tiles = 1
|
x_tiles = 1
|
||||||
|
|
||||||
# The tile at tilex,tiley obviously contains chunk, but so do the
|
# The tile at tilecol,tilerow obviously contains chunk, but so do
|
||||||
# next 4 tiles down because chunks are very tall
|
# the next 4 tiles down because chunks are very tall
|
||||||
for i in xrange(x_tiles):
|
for i in xrange(x_tiles):
|
||||||
for j in xrange(5):
|
for j in xrange(5):
|
||||||
tile = Tile.compute_path(tilex-2*i, tiley+4*j, depth)
|
|
||||||
|
c = tilecol - 2*i
|
||||||
|
r = tilerow + 4*j
|
||||||
|
# Make sure the tile is in the range according to the given
|
||||||
|
# depth. This won't happen unless the user has given -z to
|
||||||
|
# render a smaller area of the map than everything
|
||||||
|
if (
|
||||||
|
c < self.mincol or
|
||||||
|
c >= self.maxcol or
|
||||||
|
r < self.minrow or
|
||||||
|
r >= self.maxrow
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
|
||||||
|
tile = Tile.compute_path(c, r, depth)
|
||||||
|
|
||||||
if self.forcerender:
|
if self.forcerender:
|
||||||
dirty.set_dirty(tile.path)
|
dirty.set_dirty(tile.path)
|
||||||
|
|||||||
Reference in New Issue
Block a user