diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java index f0867a12a55675f930f5f3ba739a5eb6f5ba4cb2..b461f4d7e40818daf7a8f2f05cb8ae9e28f702aa 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/GameSceneController.java @@ -85,6 +85,8 @@ public class GameSceneController implements Initializable { int diffTileCount = 30; int scaledTileSize = 48; private final Biom biom = runtimeInfo.getMapBiom(); + private final long targetFrameTime = 1_000_000_000 / 80; // sets the target frame time to 12.5 ms (80fps) + private long lastFrame = 0; @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -142,11 +144,15 @@ public class GameSceneController implements Initializable { AnimationTimer gameLoop = new AnimationTimer() { @Override - public void handle(long l) { + public void handle(long now) { if (!inputHandler.isPause()) { - graphicsContext2D.clearRect(0, 0, canvas2D.getWidth(), canvas2D.getHeight()); - renderContent(graphicsContext2D); - updateContent(); + if (now - lastFrame >= targetFrameTime) { // If short frame time (high fps) it will skip updateContent(). Next Frame has higher frame time and updates the frame + graphicsContext2D.clearRect(0, 0, canvas2D.getWidth(), canvas2D.getHeight()); + renderContent(graphicsContext2D); + updateContent(); + lastFrame = now; + } +// remove blur if (wasPaused) { resume(); }