Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Timer {
- private long timeThen;
- private static final long measureInterval = 1000 * 1000000L; // one second
- private long lastMeasure = System.nanoTime();
- private int frameCounter;
- private long fps;
- /**
- * Creates a new Timer.
- */
- public Timer() {
- timeThen = System.nanoTime();
- }
- /**
- * Attempts to sync the timer with the specified fps.
- * @param fps the fps to sync with.
- */
- public void sync(int fps) {
- updateFPS();
- long gapTo = 1000000000L/fps + timeThen;
- long timeNow = System.nanoTime();
- try {
- while (gapTo > timeNow) {
- Thread.sleep((gapTo-timeNow) / 5000000000L);
- timeNow = System.nanoTime();
- }
- } catch (Exception e) {}
- timeThen = timeNow;
- }
- /**
- * Calculates the fps.
- */
- private void updateFPS() {
- this.frameCounter++;
- long now = System.nanoTime();
- if(now >= this.lastMeasure + measureInterval) {
- this.fps = this.frameCounter;
- this.frameCounter = 0;
- this.lastMeasure += measureInterval;
- }
- }
- /**
- * The Timer automatically tries to calculate the fps it's running on.
- * This method returns that value. It updates once every second.
- * @return the current fps this timer is running in.
- */
- public long getFps() {
- return this.fps;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement