示例#1
0
文件: Line3D.java 项目: blickly/ptii
  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();
  }
示例#2
0
  /**
   * 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()));
  }
示例#3
0
  // 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);
    }
  }