DEADSOFTWARE

60b58e0691eae2a4453544bc8267ac707fc11104
[LongFlight.git] / FPS.java
1 package code.kalter.longflight;
3 /**
4 * Ограничитель кадров
5 *
6 * @author KalterFive
7 */
8 public class FPS {
10 private static FPS instance;
12 public static FPS getInstance(int max) {
13 if (instance == null) {
14 instance = new FPS(max);
15 }
16 return instance;
17 }
19 private long fpsTime;
20 private long fpsDt;
21 private int max; // кол-во кадров в секунду
23 private FPS(int max) {
24 this.max = max;
25 this.fpsTime = System.currentTimeMillis();
26 this.fpsDt = 1;
27 }
29 // обновляет необходимые данные и возвращает текущий fps
30 public long process() {
31 long dt;
32 if ((dt = System.currentTimeMillis() - fpsTime) != 0) {
33 fpsDt = dt;
34 }
35 fpsTime = System.currentTimeMillis();
36 return 1000 / fpsDt;
37 }
39 // останавливает программу, пока скорость смены кадров больше заданной
40 public void max() {
41 long dt = System.currentTimeMillis() - fpsTime;
42 while (dt < max) {
43 dt = System.currentTimeMillis() - fpsTime;
44 }
45 }
46 }