Source code for events.trackingEvents

from Myro import *

[docs]class TrackRobotEvent(object): """ Event for having the worldFrame follow the robot as it moves. """ def __init__(self, levelWindow): """ Constructs a TrackRobotEvent object. Args: levelWindow: The :class:`.LevelWindow` for the current level. """ self.levelWindow = levelWindow self.anchorX = 350 self.anchorY = 350 self.minX = 0 self.maxX = 0 self.minY = 0 self.maxY = 0 def __call__(self): """ Keeps the robot within a certain margin of the center of the frame. Return: Always returns True. """ r = getRobot() if r: x = max(min(self.anchorX - r.frame.x, self.maxX), self.minX) y = max(min(self.anchorY - r.frame.y, self.maxY), self.minY) self.levelWindow.worldFrame.moveTo(x, y) return True
[docs]class TrackResizeEvent(object): """ Event for responding to window resizes (deprecated). Should not be used, use the on resize triggers of Calico instead. """ def __init__(self, levelWindow): """ Constructs a TrackResizeEvent object. Args: levelWindow: The :class:`.LevelWindow` for the current level. """ self.levelWindow = levelWindow self.prevDx=0 self.prevDy=0 def __call__(self): """ Keeps the masterFrame centerd when the window is resized. Return: Always returns True. """ iw = self.levelWindow.viewW# + self.levelWindow.panel3W ih = self.levelWindow.viewH# + self.levelWindow.panel2H w = self.levelWindow.sim.window.width h = self.levelWindow.sim.window.height dx = 0 dy = 0 if w > iw: dw = w - iw dx = dw/2 if h > ih: dh = h - ih dy = dh/2 if self.prevDx != dx or self.prevDy != dy: self.levelWindow.masterFrame.moveTo(dx, dy) self.prevDx = dx self.prevDy = dy return True