Example #1
0
  @Override
  public void run() {
    init();

    int fps = 0;
    long frameCounter = 0;

    long lastTime = Time.getTime();
    float unproccessedTime = 0;

    while (!Window.isCloseRequested()) {
      boolean render = false;

      long startTime = Time.getTime();
      long passed = startTime - lastTime;
      lastTime = startTime;

      unproccessedTime += passed / (float) Time.SECOND;
      frameCounter += passed;

      while (unproccessedTime > frameTime) {
        render = true;

        unproccessedTime -= frameTime;

        Time.setDelta((float) frameTime);

        game.fixedUpdate();
        renderingEngine.fixedUpdate();

        if (frameCounter >= Time.SECOND) {
          System.out.println(fps);
          fps = 0;
          frameCounter = 0;
        }

        update();
      }

      if (render) {
        renderingEngine.render(game.getRootObject());
        Window.render();
        fps++;
      } else {
        try {
          Thread.sleep(1);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }