package amidst.utilties; public class FramerateTimer { private int tickCounter; private long lastUpdate; private long msPerUpdate; private float currentFPS = 0.0f; public FramerateTimer(int updatesPerSecond) { msPerUpdate = (long)(1000f * (1f/updatesPerSecond)); reset(); } public void reset() { tickCounter = 0; lastUpdate = System.currentTimeMillis(); } public void tick() { tickCounter++; long curTime = System.currentTimeMillis(); if (curTime - lastUpdate > msPerUpdate) { float timeDifference = curTime - lastUpdate; timeDifference /= 1000f; timeDifference = tickCounter/timeDifference; currentFPS = timeDifference; tickCounter = 0; lastUpdate = curTime; } } public float getFramerate() { return currentFPS; } @Override public String toString() { return "FPS: " + String.format("%.1f", currentFPS); } }