if (drawing) { canvas.getSize(dim); water.addDroplet(new Water.Droplet( 2 * (mousePosX / (float) dim.width  - 0.5f), -2 * (mousePosY / (float) dim.height - 0.5f), 0.08f)); } water.tick();
    public void display(GLDrawable drawable) {      if (water == null) {	return;      }      if (quit) {        return;      }      if (!firstRender) {        if (++frameCount == 30) {          timer.stop();          System.err.println("Frames per second: " + (30.0f / timer.getDurationAsSeconds()));          timer.reset();          timer.start();          frameCount = 0;        }      } else {        firstRender = false;        timer.start();      }      GL gl = drawable.getGL();      GLU glu = drawable.getGLU();      gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);      if (doViewAll) {	viewer.viewAll(gl);	doViewAll = false;      }      viewer.update(gl);      ManipManager.getManipManager().updateCameraParameters(drawable, viewer.getCameraParameters());      ManipManager.getManipManager().render(drawable, gl);      CameraParameters params = viewer.getCameraParameters();      water.draw(gl, params.getOrientation().inverse());    }