self._position = pymunk.Vec2d(position) # light's position
self._ray_filter = ray_filter # light filter
self._rays = [] # list of RayPolys
+ self._direction = None # normal vector for direction
self._start = None # normal vector in direction of start angle limit
self._end = None # normal vector in direction of end angle limit
self._set_angle_limits(direction, spread)
self._max_radius = radius_limits[1]
def rotatable(self):
- return self._start is not None
+ return self._direction is not None
- def rotate_degrees(self, degrees):
- self._start.rotate_degrees(degrees)
- self._end.rotate_degrees(degrees)
+ @property
+ def direction(self):
+ return self._direction.angle_degrees
+
+ @direction.setter
+ def direction(self, degrees):
+ spread = self._direction.get_angle_between(self._start)
+ self._direction.angle_degrees = degrees
+ self._start = self._direction.rotated(spread)
+ self._end = self._direction.rotated(-spread)
self._poly_cache = None
def _set_angle_limits(self, direction, spread):
if direction is None or spread is None:
+ self._direction = None
self._start = None
self._end = None
else:
- n = pymunk.Vec2d(1, 0)
- self._start = n.rotated_degrees(-spread/2.)
- self._end = n.rotated_degrees(spread/2.)
+ self._direction = pymunk.Vec2d(1, 0)
+ self._start = self._direction.rotated_degrees(-spread/2.)
+ self._end = self._direction.rotated_degrees(spread/2.)
self._poly_cache = None
def polys(self):