private void run() { try { CtrlMsg regReq = CtrlMsg.newBuilder().setCtrlMsgTyp(CtrlMsg.Type.REGISTER).setId(id).build(); CtrlMsgRsp regRsp = visService.ctrl(cntr, regReq); ScnReq scReq = ScnReq.newBuilder().build(); Scenario scRsp = visService.reqScn(cntr, scReq); this.drawer = new EventsBasedVisDebugger(scRsp, null); this.drawer.addAdditionalDrawer(new InfoBox()); init(); ZoomPan zoomer = this.drawer.zoomer; int w = this.drawer.getWidth(); int h = this.drawer.getHeight(); PVector br = new PVector(w, h); PVector tl = new PVector(0, 0); loadScenario(scRsp); // log.info(rsp); while (true) { PVector brC = zoomer.getDispToCoord(br); PVector tlC = zoomer.getDispToCoord(tl); FrameRqst frReq = FrameRqst.newBuilder() .setTlX(tlC.x - drawer.getOffsetX() - 100) .setTlY(-(drawer.getOffsetY() + tlC.y) + 100) .setBrX(brC.x - drawer.getOffsetX() + 100) .setBrY(-(drawer.getOffsetY() + brC.y) - 100) .setTime(0) .setId(id) .build(); Frame frame = visService.reqFrame(cntr, frReq); handleFrame(frame); } } catch (ServiceException e) { throw new RuntimeException(e); } }