import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.*;
import java.awt.event.*;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.media.j3d.*;
import java.util.Enumeration;


public class gsTimer extends Behavior {
        WakeupOnElapsedTime     wt;
        Transform3D             tbox;
   int                  lCount = 0;
        TransformGroup  objTrans;

   double xCoord = 0.0; 
   double yCoord = 0.0; 
   double zCoord = 0.0;

   boolean FOR = true; 
   boolean REV = false; 
   boolean LEF = false; 
        boolean RIG = false; 
        
        
        // this sets up the type of bahaviour (timed)
        
        public void initialize() {
            wt = new WakeupOnElapsedTime(100);
            this.wakeupOn(wt);
        }

        // store any data you want to use later.
        public void dataPort(TransformGroup obj, Transform3D tt) {
                objTrans = obj;
                tbox = tt;
        }


   //public void a()
   //   {
   //   System.out.println(" ---- a ---- ");
   //   }


        // This method is called everytime a timeout finishes
        public void processStimulus(Enumeration criteria) {
                Vector3d vv;
                double dp;

      //a();


      //will move the oject 5 units forward

      if (FOR == true)
         {
         System.out.println("z = "+zCoord);
         zCoord = zCoord-0.025;

         vv = new Vector3d(xCoord, yCoord , zCoord); 
         tbox.setTranslation(vv);                    
         objTrans.setTransform(tbox);                

         if (zCoord <= -5)
            {
            FOR = false; RIG = true;
            }
         
         }
      
      /*
      if (RIG == true)
         {
         System.out.println("x = " + xCoord);
         xCoord = xCoord+0.025;
         
         vv = new Vector3d(xCoord, yCoord , zCoord); 
         tbox.setTranslation(vv);                    
         objTrans.setTransform(tbox);                

         if (xCoord >= 2)
            {
            RIG = false; LEF = true;

            }
         }


      if (LEF == true)                                
         {                                            
         System.out.println("x = " + xCoord);         
         xCoord = xCoord-0.025;                       
                                                      
         vv = new Vector3d(xCoord, yCoord , zCoord);  
         tbox.setTranslation(vv);                     
         objTrans.setTransform(tbox);                 
                                                      
         if (xCoord <= 1)                            
            {                                         
            REV = true; LEF = false;                  
                                                      
            }                                         
         }                                            






       if (REV == true)                         
          {                                     
          System.out.println("z = " + zCoord);  
          zCoord = zCoord+0.025;
          
          vv = new Vector3d(xCoord, yCoord , zCoord); 
          tbox.setTranslation(vv);                    
          objTrans.setTransform(tbox);                

          if (zCoord >= 0)                      
             REV = false;           
                     
                                               
          }                                     
                
      */
      
                //vv = new Vector3d(xCoord, yCoord , zCoord);
                //tbox.setTranslation(vv);
                //objTrans.setTransform(tbox);
           
      wakeupOn(wt);             
        }
}















































































































