def test_foo(self): start = Vector(0, 0, 0) finish = Vector(4, 6, 0) dir = (finish - start).normalize() stepper = walk(start, dir) self.failUnlessEqual(stepper.next(), Vector(0,0,0)) self.failUnlessEqual(stepper.next(), Vector(0,1,0)) self.failUnlessEqual(stepper.next(), Vector(1,1,0)) self.failUnlessEqual(stepper.next(), Vector(1,2,0)) self.failUnlessEqual(stepper.next(), Vector(2,2,0)) self.failUnlessEqual(stepper.next(), Vector(2,3,0))
def trace(self, start, direction, max_distance=64): """ This is a cheapISH and FLAWED traceline implementation for where accuracy isnt that important. """ count = max_distance prev = start.copy() for vec in walk(start, direction): if self.get_block(vec).solid: return prev prev = vec count -= 1 if count <= 0: break return prev