def __init__(self, **kwargs): """Initialize the rocket timer using values from settings""" config = getattr(settings, 'ROCKET', None) if config is None: config = {} self.mode = config.get('mode') or 'editor' self.files = config.get('files') or './tracks' self.project = config.get('project') or 'project.xml' self.start_paused = False self.controller = TimeController(config.get('rps', 24)) if self.mode == 'editor': self.rocket = Rocket.from_socket(self.controller, track_path=self.files) self.start_paused = True elif self.mode == 'project': self.rocket = Rocket.from_project_file(self.controller, self.project) elif self.mode == 'files': self.rocket = Rocket.from_files(self.controller, self.files) else: raise ValueError("Unknown rocket mode: '{}'".format(self.mode)) # Register tracks in the editor # Ninja in pre-created track objects for track in tracks.tacks: self.rocket.tracks.add(track) # Tell the editor about these tracks for track in tracks.tacks: self.rocket.track(track.name) self.rocket.update() super().__init__(**kwargs)
def main(): controller = TimeController(24) rocket = Rocket.from_socket(controller, track_path="./data", log_level=logging.ERROR) # rocket = Rocket.from_project_file(controller, 'example.xml') # rocket = Rocket.from_files(controller, './data') rocket.track("underwater:cam.x") rocket.track("underwater:cam.y") t1 = rocket.track("cube:size") t2 = rocket.track("cube:zoom") rocket.start() # Fake draw loop frame = 0 while True: try: rocket.update() except SocketConnError: print("Editor probably closed..") break # Get track values from rocket v1 = rocket.value("underwater:cam.x") v2 = rocket.value("underwater:cam.y") # Get track values from track v3 = t1.row_value(rocket.row) v4 = t2.row_value(rocket.row) time.sleep(1.0 / 1000 * 16) frame += 1 if frame % 60 == 0: print("frame", frame, "time", rocket.time, "row", rocket.row, "playing", controller.playing) print("values", v1, v2, v3, v4)