diff --git a/src/main/java/lab/DrawingThread.java b/src/main/java/lab/DrawingThread.java index bac23778ca78f5778c11626505ba7a4420db604e..9324c887b8eb6e51e26f8c768ed05a5a3d972657 100755 --- a/src/main/java/lab/DrawingThread.java +++ b/src/main/java/lab/DrawingThread.java @@ -6,6 +6,8 @@ import javafx.scene.canvas.GraphicsContext; public class DrawingThread extends AnimationTimer { + private static final int FPS = 100; + private final Canvas canvas; private final GraphicsContext gc; @@ -25,13 +27,19 @@ public class DrawingThread extends AnimationTimer { */ @Override public void handle(long now) { - gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); - world.draw(gc); - if (lasttime > 0) { - //time are in nanoseconds and method simulate expects seconds - world.simulate((now - lasttime) / 1e9); + + double deltaT = (now - lasttime) / 1e9; + if (deltaT >= 1./FPS) { + gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight()); + world.draw(gc); + if (lasttime > 0) { + //time are in nanoseconds and method simulate expects seconds + + world.simulate(deltaT); + } + lasttime = now; } - lasttime = now; + } }