X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=tabakrolletjie%2Flights.py;h=81740d88fd2003603c3332323900d120f3f5d283;hb=acaa20518c279ace7be09da5e157130da6c8ba6a;hp=92b66e0a8d4b91907fdec632724e00b0ffa9fba8;hpb=d4d66b09aeef6f9973b15e8cc6d04883a9f6f339;p=tabakrolletjie.git diff --git a/tabakrolletjie/lights.py b/tabakrolletjie/lights.py index 92b66e0..81740d8 100644 --- a/tabakrolletjie/lights.py +++ b/tabakrolletjie/lights.py @@ -2,6 +2,8 @@ """ import pymunk +import pymunk.pygame_util +import pygame.draw class BaseLight(object): @@ -12,10 +14,11 @@ class BaseLight(object): self.colour = colour self.position = position - def add_to_space(self, space): - space.remove(self.body, **self.body.shapes()) + def add(self, space): + if self.body.space is not None: + space.remove(self.body, *self.body.shapes) shapes = self.determine_ray_polys(space) - space.add(self.body, **shapes) + space.add(self.body, *shapes) def determine_ray_polys(self, space): raise NotImplementedError( @@ -38,6 +41,18 @@ class SpotLight(BaseLight): self.direction = direction self.spread = spread + def determine_ray_polys(self, space): + x, y = self.position + return [pymunk.Poly(self.body, [ + self.position, [x + 50, y], [x, y + 50]])] + + def render(self, surface): + for shape in self.body.shapes: + pygame_poly = [ + pymunk.pygame_util.to_pygame(v, surface) for v in + shape.get_vertices()] + pygame.draw.polygon(surface, (255, 255, 255), pygame_poly) + class Lamp(BaseLight): def __init__(self, colour="white", position=None, radius=100.0):