import java.awt.AWTEvent;import java.awt.event.*;import java.util.Enumeration;import javax.media.j3d.*;import javax.vecmath.*;import javax.swing.JRadioButton;import com.sun.j3d.utils.universe.*;public class HMDHeadToHTBehavior extends Behavior {  private WakeupCondition keyCriterion;  PhysicalBody body;  Screen3D left;  Screen3D right;  JRadioButton rb;    public HMDHeadToHTBehavior(PhysicalBody body, JRadioButton rb) {    this.body = body;    this.rb = rb;    System.out.println("HMDHeadToHTBehavior constructor");  }  public void initialize() {        WakeupCriterion[] keyEvents = new WakeupCriterion[2];    keyEvents[0] = new WakeupOnAWTEvent( KeyEvent.KEY_PRESSED );    keyEvents[1] = new WakeupOnAWTEvent( KeyEvent.KEY_RELEASED );    keyCriterion = new WakeupOr( keyEvents );    wakeupOn( keyCriterion );    System.out.println("initialize complete");  }  public void processStimulus( Enumeration criteria ) {     WakeupCriterion wakeup;    AWTEvent[] event;    while( criteria.hasMoreElements() ) {      wakeup = (WakeupCriterion) criteria.nextElement();      if( !(wakeup instanceof WakeupOnAWTEvent) )        continue;      event = ((WakeupOnAWTEvent)wakeup).getAWTEvent();      for( int i = 0; i < event.length; i++ )      {        if( event[i].getID() == KeyEvent.KEY_PRESSED & rb.isSelected()==true)        {          processKeyEvent((KeyEvent)event[i]);        }      }    }    wakeupOn( keyCriterion );  }  protected void processKeyEvent(KeyEvent event) {    int keycode = event.getKeyCode();    Transform3D htoht = new Transform3D();    body.getHeadToHeadTracker(htoht);        Transform3D tchange = new Transform3D();    tchange.setIdentity();    //if cntl rotate + - if not cntl rotate +        if(keycode == KeyEvent.VK_X) {       System.out.println("rotating around X for HeadToHeadTracker");      // body.getHeadToHeadTracker(tchange);       tchange.rotY(Math.PI/36);   }    else if(keycode == KeyEvent.VK_Y) {       System.out.println("rotating around Y for HeadToHeadTracker");     //  body.getHeadToHeadTracker(tchange);       tchange.rotY(Math.PI/36);   }      else if(keycode == KeyEvent.VK_Z) {       System.out.println("rotating around Z for HeadToHeadTracker");       //body.getHeadToHeadTracker(tchange);       tchange.rotZ(Math.PI/36);    }         htoht.mul(tchange);       body.setHeadToHeadTracker(htoht);  }}