예제 #1
0
 def test_query_point_with_mask(self):
     from grease.collision import BroadSweepAndPrune, Pair
     world = TestWorld()
     coll = BroadSweepAndPrune()
     coll.set_world(world)
     set_entity = world.collision.set
     
     set_entity(1, 0, 0, 2, 2, into_mask=1)
     set_entity(2, 0, 0, 2, 2, into_mask=2)
     set_entity(3, 0, 0, 2, 2, into_mask=5)
     coll.step(0)
     self.assertEqual(coll.query_point(1, 1), set([1, 2, 3]))
     self.assertEqual(coll.query_point(1, 1, from_mask=1), set([1, 3]))
     self.assertEqual(coll.query_point(1, 1, from_mask=2), set([2]))
     self.assertEqual(coll.query_point(1, 1, from_mask=3), set([1, 2, 3]))
     self.assertEqual(coll.query_point(1, 1, from_mask=4), set([3]))
     self.assertEqual(coll.query_point(1, 1, from_mask=5), set([1, 3]))
     self.assertEqual(coll.query_point(1, 1, from_mask=8), set())
예제 #2
0
    def test_query_point_with_mask(self):
        from grease.collision import BroadSweepAndPrune, Pair
        world = TestWorld()
        coll = BroadSweepAndPrune()
        coll.set_world(world)
        set_entity = world.collision.set

        set_entity(1, 0, 0, 2, 2, into_mask=1)
        set_entity(2, 0, 0, 2, 2, into_mask=2)
        set_entity(3, 0, 0, 2, 2, into_mask=5)
        coll.step(0)
        self.assertEqual(coll.query_point(1, 1), set([1, 2, 3]))
        self.assertEqual(coll.query_point(1, 1, from_mask=1), set([1, 3]))
        self.assertEqual(coll.query_point(1, 1, from_mask=2), set([2]))
        self.assertEqual(coll.query_point(1, 1, from_mask=3), set([1, 2, 3]))
        self.assertEqual(coll.query_point(1, 1, from_mask=4), set([3]))
        self.assertEqual(coll.query_point(1, 1, from_mask=5), set([1, 3]))
        self.assertEqual(coll.query_point(1, 1, from_mask=8), set())
예제 #3
0
    def test_query_point(self):
        from grease.collision import BroadSweepAndPrune, Pair
        world = TestWorld()
        coll = BroadSweepAndPrune()
        coll.set_world(world)
        set_entity = world.collision.set

        set_entity(1, -1, -1, 3, 1)
        set_entity(2, 4, 4, 8, 8)
        set_entity(3, 6, 6, 9, 9)

        # Queries before the first step should always return no hits
        self.assertEqual(coll.query_point(0, 0), set())
        coll.step(0)
        self.assertEqual(coll.query_point(0, 0), set([1]))
        self.assertEqual(coll.query_point([0, 0]), set([1]))

        set_entity(2, 4, 4, 8, 8)
        set_entity(3, 6, 6, 9, 9)
        world.collision.new_entities.add(2)
        world.collision.new_entities.add(3)
        coll.step(0)
        self.assertEqual(coll.query_point(0, 0), set([1]))
        self.assertEqual(coll.query_point([0, 0]), set([1]))
        self.assertEqual(coll.query_point(-1, 0), set([1]))
        self.assertEqual(coll.query_point(-1.0001, 0), set())
        self.assertEqual(coll.query_point(3, 0), set([1]))
        self.assertEqual(coll.query_point(3.0001, 0), set())
        self.assertEqual(coll.query_point(0, -1), set([1]))
        self.assertEqual(coll.query_point(0, -1.0001), set())
        self.assertEqual(coll.query_point(0, 1), set([1]))
        self.assertEqual(coll.query_point(0, 1.0001), set())
        self.assertEqual(coll.query_point(-1, -1), set([1]))
        self.assertEqual(coll.query_point(3, -1), set([1]))
        self.assertEqual(coll.query_point(3, 1), set([1]))
        self.assertEqual(coll.query_point(3, 1), set([1]))

        self.assertEqual(coll.query_point(5, 5), set([2]))
        self.assertEqual(coll.query_point([6, 7]), set([2, 3]))
        self.assertEqual(coll.query_point([7, 7]), set([2, 3]))
        self.assertEqual(coll.query_point([7, 8]), set([2, 3]))
        self.assertEqual(coll.query_point([8.5, 8.5]), set([3]))

        self.assertEqual(coll.query_point(-2, 0), set())
        self.assertEqual(coll.query_point(10, 5), set())
        self.assertEqual(coll.query_point(7, 10), set())
        self.assertEqual(coll.query_point(7, -10), set())
        self.assertEqual(coll.query_point(-200, 100), set())
예제 #4
0
 def test_before_step(self):
     # Queries should be well behaved even before the controller is run
     from grease.collision import BroadSweepAndPrune
     coll = BroadSweepAndPrune()
     self.assertEqual(coll.collision_pairs, set())
     self.assertEqual(coll.query_point(0,0), set())
예제 #5
0
    def test_query_point(self):
        from grease.collision import BroadSweepAndPrune, Pair
        world = TestWorld()
        coll = BroadSweepAndPrune()
        coll.set_world(world)
        set_entity = world.collision.set

        set_entity(1, -1, -1, 3, 1)
        set_entity(2, 4, 4, 8, 8)
        set_entity(3, 6, 6, 9, 9)

        # Queries before the first step should always return no hits
        self.assertEqual(coll.query_point(0, 0), set())
        coll.step(0)
        self.assertEqual(coll.query_point(0, 0), set([1]))
        self.assertEqual(coll.query_point([0, 0]), set([1]))

        set_entity(2, 4, 4, 8, 8)
        set_entity(3, 6, 6, 9, 9)
        world.collision.new_entities.add(2)
        world.collision.new_entities.add(3)
        coll.step(0)
        self.assertEqual(coll.query_point(0, 0), set([1]))
        self.assertEqual(coll.query_point([0, 0]), set([1]))
        self.assertEqual(coll.query_point(-1, 0), set([1]))
        self.assertEqual(coll.query_point(-1.0001, 0), set())
        self.assertEqual(coll.query_point(3, 0), set([1]))
        self.assertEqual(coll.query_point(3.0001, 0), set())
        self.assertEqual(coll.query_point(0, -1), set([1]))
        self.assertEqual(coll.query_point(0, -1.0001), set())
        self.assertEqual(coll.query_point(0, 1), set([1]))
        self.assertEqual(coll.query_point(0, 1.0001), set())
        self.assertEqual(coll.query_point(-1, -1), set([1]))
        self.assertEqual(coll.query_point(3, -1), set([1]))
        self.assertEqual(coll.query_point(3, 1), set([1]))
        self.assertEqual(coll.query_point(3, 1), set([1]))

        self.assertEqual(coll.query_point(5, 5), set([2]))
        self.assertEqual(coll.query_point([6, 7]), set([2, 3]))
        self.assertEqual(coll.query_point([7, 7]), set([2, 3]))
        self.assertEqual(coll.query_point([7, 8]), set([2, 3]))
        self.assertEqual(coll.query_point([8.5, 8.5]), set([3]))

        self.assertEqual(coll.query_point(-2, 0), set())
        self.assertEqual(coll.query_point(10, 5), set())
        self.assertEqual(coll.query_point(7, 10), set())
        self.assertEqual(coll.query_point(7, -10), set())
        self.assertEqual(coll.query_point(-200, 100), set())
예제 #6
0
 def test_before_step(self):
     # Queries should be well behaved even before the controller is run
     from grease.collision import BroadSweepAndPrune
     coll = BroadSweepAndPrune()
     self.assertEqual(coll.collision_pairs, set())
     self.assertEqual(coll.query_point(0, 0), set())