samer@1: import javax.media.j3d.*; samer@1: import javax.vecmath.*; samer@1: import java.util.Enumeration; samer@1: samer@1: final class FPS extends Behavior { samer@1: samer@1: protected int nFrames; samer@1: protected long startTime; samer@1: protected final WakeupCondition w; samer@1: samer@1: public FPS(int nFrames){ samer@1: this.nFrames=nFrames; samer@1: w=new WakeupOnElapsedFrames(nFrames); samer@1: } samer@1: samer@1: public FPS(){ samer@1: this(100); samer@1: } samer@1: samer@1: public void initialize(){ samer@1: setSchedulingBounds(new BoundingSphere(new Point3d(),1000)); samer@1: startTime=System.currentTimeMillis(); samer@1: wakeupOn(w); samer@1: } samer@1: samer@1: public void processStimulus(Enumeration criteria){ samer@1: long time=System.currentTimeMillis(); samer@1: System.err.println("fps: "+ 1000 * (double) nFrames / (double) (time-startTime)); samer@1: startTime=time; samer@1: wakeupOn(w); samer@1: } samer@1: }