This commit is contained in:
Anuken
2023-07-29 21:57:01 -04:00
parent 07c7fd7dec
commit 59dd3a9e34
2 changed files with 15 additions and 11 deletions
+14 -10
View File
@@ -27,7 +27,7 @@ import static mindustry.Vars.*;
public abstract class ClientLauncher extends ApplicationCore implements Platform{ public abstract class ClientLauncher extends ApplicationCore implements Platform{
private static final int loadingFPS = 20; private static final int loadingFPS = 20;
private long lastTime; private long nextFrame;
private long beginTime; private long beginTime;
private boolean finished = false; private boolean finished = false;
private LoadRenderer loader; private LoadRenderer loader;
@@ -199,6 +199,13 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
@Override @Override
public void update(){ public void update(){
int targetfps = Core.settings.getInt("fpscap", 120);
boolean limitFps = targetfps > 0 && targetfps <= 240;
if(limitFps){
nextFrame += (1000 * 1000000) / targetfps;
}
if(!finished){ if(!finished){
if(loader != null){ if(loader != null){
loader.draw(); loader.draw();
@@ -230,17 +237,13 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
asyncCore.end(); asyncCore.end();
} }
int targetfps = Core.settings.getInt("fpscap", 120); if(limitFps){
long current = Time.nanos();
if(targetfps > 0 && targetfps <= 240){ if(nextFrame > current){
long target = (1000 * 1000000) / targetfps; //target in nanos long toSleep = nextFrame - current;
long elapsed = Time.timeSinceNanos(lastTime); Threads.sleep(toSleep / 1000000, (int)(toSleep % 1000000));
if(elapsed < target){
Threads.sleep((target - elapsed) / 1000000, (int)((target - elapsed) % 1000000));
} }
} }
lastTime = Time.nanos();
} }
@Override @Override
@@ -251,6 +254,7 @@ public abstract class ClientLauncher extends ApplicationCore implements Platform
@Override @Override
public void init(){ public void init(){
nextFrame = Time.nanos();
setup(); setup();
} }
+1 -1
View File
@@ -25,4 +25,4 @@ org.gradle.caching=true
#used for slow jitpack builds; TODO see if this actually works #used for slow jitpack builds; TODO see if this actually works
org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.socketTimeout=100000
org.gradle.internal.http.connectionTimeout=100000 org.gradle.internal.http.connectionTimeout=100000
archash=a88585a22d archash=4be3d22cf6