import numpy import sys import time from benchmarks import bench_temp_level from mceditlib import relight # run me with the source checkout as the working dir so I can find the test_files folder. def natural_relight(): world = bench_temp_level("AnvilWorld") dim = world.getDimension() positions = [] for cx, cz in dim.chunkPositions(): chunk = dim.getChunk(cx, cz) for cy in chunk.sectionPositions(): positions.append((cx, cy, cz)) poses = iter(positions) def do_relight(): cx, cy, cz = poses.next() indices = numpy.indices((16, 16, 16), numpy.int32) indices.shape = 3, 16*16*16 indices += ([cx << 4], [cy << 4], [cz << 4]) x, y, z = indices relight.updateLightsByCoord(dim, x, y, z) # Find out how many sections we can do in `maxtime` seconds. start = time.time() count = 0 maxtime = 10 end = start + maxtime while time.time() < end: try: do_relight() except StopIteration: break count += 1 t = time.time() - start print "Relight natural terrain: %d/%d chunk-sections in %.02f seconds (%f sections per second; %dms per section)" % (count, len(positions), t, count / t, 1000 * t / count) if __name__ == '__main__': if len(sys.argv) > 1: method = sys.argv[1] print "Using method", method relight.setMethod(method) natural_relight()