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)
+ if direction:
+ self.direction = direction # Update direction
self._max_radius = None # maximum radius in pixels
self._min_radius = None # minimum radius in pixels
self._set_radius_limits(radius_limits)
# TODO: Add error sound or something
pass
- def _update_light_angle(self, pos):
+ def _update_light_angle(self, pos, gamestate):
# Update the angle of the given light
pos = pymunk.pygame_util.to_pygame(pos, pygame.display.get_surface())
distance = pos - self._dragging.position
angle = math.atan2(distance[1], distance[0])
# Set light angle to this position
self._dragging.ray_manager.direction = math.degrees(angle)
- # TODO: Update gamestate with new angle
+ # Hackily update gamestate with new angle
+ for light_cfg in gamestate.station["lights"]:
+ light_pos = pymunk.Vec2d(light_cfg["position"])
+ if light_pos.get_dist_sqrd(self._dragging.position) < 5.0:
+ light_cfg["direction"] = math.degrees(angle)
+ break
def _place_spotlight(self, gamestate, colour, ev):
if self._seeds > 5:
print self._lights.lit_by(ev.pos, surfpos=True)
elif ev.button == 3:
light = self._lights.nearest(ev.pos, surfpos=True,
- max_distance=5.0)
+ max_distance=20.0)
if light:
# Start drag to rotate light
self._dragging = light
elif ev.type == pgl.MOUSEMOTION:
if self._dragging:
# Calculate angle between current position and mouse pos
- self._update_light_angle(ev.pos)
+ self._update_light_angle(ev.pos, gamestate)
elif ev.type == pgl.MOUSEBUTTONUP:
self._dragging = None