public VisualizerPanel(BackendAPI backend) { super(new BorderLayout()); if (backend != null) { backend.addControllerListener(this); backend.addUGSEventListener(this); } // Create the OpenGL rendering canvas this.canvas = new VisualizerCanvas(); // Create a animator that drives canvas' display() at the specified FPS. FPSAnimator animator = new FPSAnimator(canvas, FPS, true); animator.start(); // start the animation loop initComponents(); }
@Override public void windowClosing(WindowEvent e) { fpsAnimator.stop(); } @Override
public void createAndShowGUI() { // Create and set up the window. mainFrame = new JFrame(Translator.get("TitlePrefix")); mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); mainFrame.addWindowListener(this); mainFrame.setJMenuBar(createMenuBar()); mainFrame.setContentPane(createContentPane()); adjustWindowSize(); mainFrame.setVisible(true); drawPanel.zoomToFitPaper(); // add the drag & drop support mainFrame.setTransferHandler(myTransferHandler); // start animation system animator = new FPSAnimator(30); animator.add(drawPanel); animator.start(); }
protected void startGLCanvas() { if (frameRate > 0) { animator = new FPSAnimator(canvas, frameRate); } else { animator = new Animator(); animator.add(canvas); ((Animator) animator).setRunAsFastAsPossible(true); } animator.start(); wasAnimating = true; }
public void start() { mAnimator = new FPSAnimator(this.getGLAutoDrawable(), mFramesPerSecond); mAnimator.setUpdateFPSFrames(60, null); mAnimator.start(); while (!mAnimator.isAnimating()) Thread.yield(); }
private void perspectiveAnim(float v) { if (isAnimationEnabled()) { if (!animator.isAnimating()) { animator.start(); } fromPerspective = perspective; toPerspective = v; deltaPerspective = (toPerspective - fromPerspective) / 15f; } else { perspective = v; } }
@Override public final synchronized boolean pause() { if ( !isStarted() || pauseIssued ) { return false; } if(DEBUG) { System.err.println("FPSAnimator.pause() START: "+task+", "+ Thread.currentThread() + ": " + toString()); } final boolean res; if( null == task ) { // start/resume case w/ drawablesEmpty res = true; } else { pauseIssued = true; res = finishLifecycleAction(waitForPausedCondition, POLLP_WAIT_FOR_FINISH_LIFECYCLE_ACTION); } if(DEBUG) { System.err.println("FPSAnimator.pause() END: "+task+", "+ Thread.currentThread() + ": " + toString()); } if(null != task) { task.cancel(); task = null; } return res; } private final Condition waitForPausedCondition = new Condition() {
public void startThread() { if (animator != null) { animator.start(); } }
public void setFrameRate(float fps) { if (fps < 1) { PGraphics.showWarning( "The OpenGL renderer cannot have a frame rate lower than 1.\n" + "Your sketch will run at 1 frame per second."); fps = 1; } else if (fps > 1000) { PGraphics.showWarning( "The OpenGL renderer cannot have a frame rate higher than 1000.\n" + "Your sketch will run at 1000 frames per second."); fps = 1000; } if (animator != null) { animator.stop(); animator.setFPS((int)fps); pgl.setFps(fps); animator.start(); } }
@Override public final synchronized boolean start() { if ( null != timer || null != task || isStarted() ) { return false; } timer = new Timer( getThreadName()+"-"+baseName+"-Timer"+(timerNo++) ); task = new MainTask(); if(DEBUG) { System.err.println("FPSAnimator.start() START: "+task+", "+ Thread.currentThread() + ": " + toString()); } task.start(timer); final boolean res = finishLifecycleAction( drawablesEmpty ? waitForStartedEmptyCondition : waitForStartedAddedCondition, POLLP_WAIT_FOR_FINISH_LIFECYCLE_ACTION); if(DEBUG) { System.err.println("FPSAnimator.start() END: "+task+", "+ Thread.currentThread() + ": " + toString()); } if( drawablesEmpty ) { task.cancel(); task = null; } return res; } private final Condition waitForStartedAddedCondition = new Condition() {
public GLCore(int w, int h) { super(w, h); activeWindowGL = new WindowGL(0, 0, w, h); glGraphics = new GLGraphics2D(); graphic = new AWTGraphics3D(w,h); canvas.addMouseMotionListener(getMouse()); canvas.addMouseWheelListener(getMouse()); canvas.addMouseListener(getMouse()); canvas.getCanvas().addGLEventListener(this); animator = new FPSAnimator(REFRESH_FPS, true); animator.add(canvas.getCanvas()); initLoaders(); }
@Override public boolean eval() { return !isStarted() || !isAnimating ; } }; private final Condition waitForStartedEmptyCondition = new Condition() {
animator = new FPSAnimator(window, 60); drawException = null; animator.setUncaughtExceptionHandler(new GLAnimatorControl.UncaughtExceptionHandler() { @Override public void uncaughtException(final GLAnimatorControl animator,
public void stop() { mAnimator.setIgnoreExceptions(true); mAnimator.pause(); mAnimator.stop(); while (mAnimator.isAnimating()) Thread.yield(); }
@Override public final String toString() { return "Task[thread "+animThread+", stopped "+alreadyStopped+", paused "+alreadyPaused+" pauseIssued "+pauseIssued+", stopIssued "+stopIssued+" -- started "+isStarted()+", animating "+isAnimatingImpl()+", paused "+isPaused()+", drawable "+drawables.size()+", drawablesEmpty "+drawablesEmpty+"]"; }
/** Creates an FPSAnimator with a given target frames-per-second value, an initial drawable to animate, and a flag indicating whether to use fixed-rate scheduling. */ public FPSAnimator(final GLAutoDrawable drawable, final int fps, final boolean scheduleAtFixedRate) { super(); this.fps = fps; if (drawable != null) { add(drawable); } this.scheduleAtFixedRate = scheduleAtFixedRate; }
if (animator != null && !isAnimating() && animator.isAnimating()) { animator.stop();