def showroute(self, acid): ''' Toggle show route for this aircraft ''' if not stack.sender(): self.route_all = acid self.client_route.clear() else: self.client_route[stack.sender()] = acid return True
def pan(self, *args): ''' Move center of display, relative of to absolute position lat,lon ''' lat, lon = 0, 0 absolute = False if args[0] == "LEFT": lon = -0.5 elif args[0] == "RIGHT": lon = 0.5 elif args[0] == "UP": lat = 0.5 elif args[0] == "DOWN": lat = -0.5 else: absolute = True lat, lon = args sender = stack.sender() if sender: if absolute: self.client_pan[sender] = (lat, lon) else: ll = self.client_pan.get(sender) or self.def_pan self.client_pan[sender] = (lat + ll[0], lon + ll[1]) else: self.def_pan = (lat, lon) if absolute else (lat + self.def_pan[0], lon + self.def_pan[1]) self.client_pan.clear() bs.sim.send_event(b'PANZOOM', dict(pan=(lat, lon), absolute=absolute))
def pan(self, *args): ''' Move center of display, relative of to absolute position lat,lon ''' lat, lon = 0, 0 absolute = False if args[0] == "LEFT": lon = -0.5 elif args[0] == "RIGHT": lon = 0.5 elif args[0] == "UP": lat = 0.5 elif args[0] == "DOWN": lat = -0.5 else: absolute = True lat, lon = args sender = stack.sender() if sender: if absolute: self.client_pan[sender] = (lat, lon) else: ll = self.client_pan.get(sender) or self.def_pan self.client_pan[sender] = (lat + ll[0], lon + ll[1]) else: self.def_pan = (lat,lon) if absolute else (lat + self.def_pan[0], lon + self.def_pan[1]) self.client_pan.clear() bs.sim.send_event(b'PANZOOM', dict(pan=(lat,lon), absolute=absolute))
def getviewbounds(self): # Get appropriate lat/lon/zoom/aspect ratio sender = stack.sender() lat, lon = self.client_pan.get(sender) or self.def_pan zoom = self.client_zoom.get(sender) or self.def_zoom ar = self.client_ar.get(sender) or 1.0 lat0 = lat - 1.0 / (zoom * ar) lat1 = lat + 1.0 / (zoom * ar) lon0 = lon - 1.0 / (zoom * np.cos(np.radians(lat))) lon1 = lon + 1.0 / (zoom * np.cos(np.radians(lat))) return lat0, lat1, lon0, lon1
def zoom(self, zoom, absolute=True): sender = stack.sender() if sender: if absolute: self.client_zoom[sender] = zoom else: self.client_zoom[sender] = zoom * self.client_zoom.get(sender, self.def_zoom) else: self.def_zoom = zoom * (1.0 if absolute else self.def_zoom) self.client_zoom.clear() bs.sim.send_event(b'PANZOOM', dict(zoom=zoom, absolute=absolute))
def getviewbounds(self): # Get appropriate lat/lon/zoom/aspect ratio sender = stack.sender() lat, lon = self.client_pan.get(sender) or self.def_pan zoom = self.client_zoom.get(sender) or self.def_zoom ar = self.client_ar.get(sender) or 1.0 lat0 = lat - 1.0 / (zoom * ar) lat1 = lat + 1.0 / (zoom * ar) lon0 = lon - 1.0 / (zoom * np.cos(np.radians(lat))) lon1 = lon + 1.0 / (zoom * np.cos(np.radians(lat))) return lat0, lat1, lon0, lon1
def zoom(self, zoom, absolute=True): sender = stack.sender() if sender: if absolute: self.client_zoom[sender] = zoom else: self.client_zoom[sender] = zoom * self.client_zoom.get(sender, self.def_zoom) else: self.def_zoom = zoom * (1.0 if absolute else self.def_zoom) self.client_zoom.clear() bs.sim.send_event(b'PANZOOM', dict(zoom=zoom, absolute=absolute))
def send_event(self, name, data=None, target=None): # On the sim side, target is obtained from the currently-parsed stack command self.event_io.send_multipart([ stack.sender() or b'*', name, msgpack.packb(data, default=encode_ndarray, use_bin_type=True) ])
def getviewctr(self): return self.client_pan.get(stack.sender()) or self.def_pan
def showroute(self, acid): ''' Toggle show route for this aircraft ''' self.route_acid[stack.sender()] = acid return True
def getviewctr(self): return self.client_pan.get(stack.sender()) or self.def_pan
def send_event(self, name, data=None, target=None): # On the sim side, target is obtained from the currently-parsed stack command self.event_io.send_multipart([stack.sender() or b'*', name, msgpack.packb(data, default=encode_ndarray, use_bin_type=True)])
def showroute(self, acid): ''' Toggle show route for this aircraft ''' self.route_acid[stack.sender()] = acid return True