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))
Exemple #2
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