# HG changeset patch # User Jeremy Thurgood # Date 1378560360 -7200 # Node ID 427d4a3c53d732582bfc36452f342e0e20888c18 # Parent 249869caaaf3d8888bb8d94336bf91c553cae931 Better CollidePuzzler behaviour. diff -r 249869caaaf3 -r 427d4a3c53d7 nagslang/puzzle.py --- a/nagslang/puzzle.py Sat Sep 07 15:21:00 2013 +0200 +++ b/nagslang/puzzle.py Sat Sep 07 15:26:00 2013 +0200 @@ -70,13 +70,21 @@ collision_types = (COLLISION_TYPE_PLAYER,) self._collision_types = collision_types - def get_colliders(self): + def get_interior_colliders(self): space = self.game_object.get_space() my_shape = self.game_object.get_shape() shapes = [shape for shape in space.shapes if shape.collision_type in self._collision_types] - return [shape for shape in shapes - if my_shape in space.point_query(shape.body.position)] + return set(shape for shape in shapes + if my_shape in space.point_query(shape.body.position)) + + def get_colliders(self): + space = self.game_object.get_space() + my_shape = self.game_object.get_shape() + shapes = set(shape for shape in space.shape_query(my_shape) + if shape.collision_type in self._collision_types) + shapes.update(self.get_interior_colliders()) + return shapes def get_state(self): return bool(self.get_colliders())