def test_query_point(self): from bGrease.collision import Circular, Pair world = TestWorld() broad = TestCollisionSys() coll = Circular(broad_phase=broad) coll.set_world(world) pos_set = world.position.set col_set = world.collision.set pos_set(1, (0, 0)) col_set(1, radius=1) pos_set(2, (0, 2)) col_set(2, radius=1.5) pos_set(3, (-4, 3)) col_set(3, radius=3) coll.step(0) self.assertEqual(broad.last_from_mask, None) self.assertEqual(coll.query_point(0,0), set([1])) self.assertEqual(coll.query_point(0,1), set([1, 2])) self.assertEqual(coll.query_point([0,1]), set([1, 2])) self.assertEqual(coll.query_point(1, 0), set([1])) self.assertEqual(coll.query_point(1.0001, 0), set()) self.assertEqual(coll.query_point(-1, 3), set([2,3])) self.assertEqual(coll.query_point(-5, 3), set([3])) self.assertEqual(broad.last_from_mask, 0xffffffff) coll.query_point([0, 0], from_mask=0xff) self.assertEqual(broad.last_from_mask, 0xff)
def test_before_step(self): # Queries should be well behaved even before the controller is run from bGrease.collision import Circular world = TestWorld() broad = TestCollisionSys() coll = Circular(broad_phase=broad) coll.set_world(world) self.assertEqual(coll.collision_pairs, set()) self.assertEqual(coll.query_point(0,0), set())