for light in self._lights:
light.add(self._space)
+ def add_light(self, cfg):
+ light = BaseLight.load(cfg)
+ self._lights.append(light)
+ light.add(self._space)
+
def toggle_nearest(self, *args, **kw):
light = self.nearest(*args, **kw)
if light:
point_info_list = self._space.point_query(
pos, max_distance, pymunk.ShapeFilter(mask=LIGHT_CATEGORY))
lights = [p.shape.body.light for p in point_info_list]
- return [light for light in lights if light.on]
+ return [
+ light for light in lights
+ if light.on and light.ray_manager.reaches(pos)
+ ]
def light_query(self, shape):
"""Query the lights by shape"""
shape_info_list = self._space.shape_query(shape)
shape.filter = old_filter
lights = [p.shape.body.light for p in shape_info_list]
- return [light for light in lights if light.on]
+ return [
+ light for light in lights
+ if light.on and light.ray_manager.reaches(shape.body.position)
+ ]
def render_light(self, surface):
for light in self._lights:
# defaults
RAY_MANAGER = RayPolyManager
FITTING_IMG = None
- FITTING_RADIUS = 10.0
+ FITTING_RADIUS = 24.0
# cached surfaces
_surface_cache = {}
if self._image is None:
fitting_colour = self.COLOURS[self.colour]
self._image = loader.load_image(
- "64", self.FITTING_IMG,
+ "48", self.FITTING_IMG,
transform=Multiply(colour=fitting_colour))
return self._image
def render_fitting(self, surface):
rx, ry = self.ray_manager.pygame_position(surface)
- surface.blit(self.get_image(), (rx - 32, ry - 32), None, 0)
+ surface.blit(self.get_image(), (rx - 24, ry - 24), None, 0)
def tick(self):
pass