public void fire() throws IllegalActionException { if (_debugging) { _debug("Called fire()"); } ArrayToken lineStartToken = ((ArrayToken) lineStart.getToken()); ArrayToken lineEndToken = ((ArrayToken) lineEnd.getToken()); ArrayToken rgbColorValue = ((ArrayToken) rgbColor.getToken()); DoubleToken widthValue = (DoubleToken) width.getToken(); GL gl = ((GRODirector) getDirector()).getGL(); gl.glLineWidth((float) widthValue.doubleValue()); gl.glBegin(GL.GL_LINES); gl.glColor3d( ((DoubleToken) rgbColorValue.getElement(0)).doubleValue(), ((DoubleToken) rgbColorValue.getElement(1)).doubleValue(), ((DoubleToken) rgbColorValue.getElement(2)).doubleValue()); // origin of the line gl.glVertex3d( ((DoubleToken) lineStartToken.getElement(0)).doubleValue(), ((DoubleToken) lineStartToken.getElement(1)).doubleValue(), ((DoubleToken) lineStartToken.getElement(2)).doubleValue()); // ending point of the line gl.glVertex3d( ((DoubleToken) lineEndToken.getElement(0)).doubleValue(), ((DoubleToken) lineEndToken.getElement(1)).doubleValue(), ((DoubleToken) lineEndToken.getElement(2)).doubleValue()); gl.glEnd(); }
/** * If there is a new token on the <i>input</i> port, then put it on the FIFO. * * <p>If the queue is not empty, then send the oldest token on the queue to the <i>output</i> * port. Send the resulting FIFO size to the <i>size</i> output port. * * @exception IllegalActionException If getting tokens from input and read ports or sending token * to output throws it. */ public void fire() throws IllegalActionException { super.fire(); // sends copy of the oldest token to the output int comp = getDirector().getModelTime().compareTo(nextFlit); if (_queue.size() != 0 && (comp == 0 | comp == 1)) { output.send(0, (Token) _queue.get(0)); if (_debugging) _debug("data sent at: " + getDirector().getModelTime()); } // reads input port // stores token on the FIFO if there is room // sends ack or nack regarding the storage of the token if (input.hasToken(0)) { Token k = input.get(0); if (_queue.size() < _queue.getCapacity()) { _queue.put(k); ack.send(0, new BooleanToken(true)); } else { ack.send(0, new BooleanToken(false)); } } if (_queue.size() != 0) { // requests new firing after period nextFlit = getDirector().getModelTime(); DoubleToken per = (DoubleToken) period.getToken(); nextFlit = nextFlit.add(per.doubleValue()); getDirector().fireAt(this, nextFlit); } // sends the FIFO size to the size port size.send(0, new IntToken(_queue.size())); }
// NOTE: No clone() method, so don't clone this. public void fire() throws IllegalActionException { super.fire(); double increment = 0.0; if ((input.getWidth() > 0) && input.hasToken(0)) { DoubleToken in = (DoubleToken) input.get(0); increment = in.doubleValue(); } output.broadcast(new DoubleToken(value + increment)); value += 1.0; Director director = getDirector(); Time time = director.getModelTime(); count++; if (count >= 5) { director.fireAt(this, time.add(1.0)); count = 0; } else { director.fireAt(this, time); } }