fix engine not closing when x button
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit
This commit is contained in:
parent
c136762d16
commit
4ddb894e5c
@ -1775,6 +1775,7 @@ Interaction editing debug menu
|
||||
Fix chest physics&interaction data
|
||||
Break out collidable template edit into dedicated component
|
||||
Fix virtual scrollable
|
||||
Fix engine not closing when X button is hit on main menu
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
package electrosphere.engine;
|
||||
|
||||
import static org.lwjgl.glfw.GLFW.glfwWindowShouldClose;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.graalvm.polyglot.HostAccess.Export;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import org.ode4j.ode.OdeHelper;
|
||||
|
||||
import electrosphere.audio.AudioEngine;
|
||||
@ -118,7 +117,7 @@ public class Main {
|
||||
|
||||
//controls
|
||||
if(Globals.RUN_CLIENT){
|
||||
initControlHandler();
|
||||
Main.initControlHandler();
|
||||
}
|
||||
|
||||
//init ODE
|
||||
@ -185,8 +184,8 @@ public class Main {
|
||||
* Runs the main loop indefinitely. Blocks the thread this is called in.
|
||||
*/
|
||||
public static void mainLoop(){
|
||||
mainLoop(0);
|
||||
shutdown();
|
||||
Main.mainLoop(0);
|
||||
Main.shutdown();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -369,7 +368,7 @@ public class Main {
|
||||
running = false;
|
||||
}
|
||||
} else {
|
||||
if(Globals.ENGINE_SHUTDOWN_FLAG || (Globals.RUN_CLIENT && glfwWindowShouldClose(Globals.window))){
|
||||
if(Globals.ENGINE_SHUTDOWN_FLAG || (Globals.RUN_CLIENT && GLFW.glfwWindowShouldClose(Globals.window))){
|
||||
running = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,7 +13,6 @@ import electrosphere.engine.threads.LabeledThread.ThreadLabel;
|
||||
import electrosphere.entity.types.terrain.BlockChunkEntity;
|
||||
import electrosphere.entity.types.terrain.TerrainChunk;
|
||||
import electrosphere.server.ai.services.PathfindingService;
|
||||
import electrosphere.server.datacell.Realm;
|
||||
import electrosphere.server.datacell.gridded.GriddedDataCellLoaderService;
|
||||
import electrosphere.util.CodeUtils;
|
||||
|
||||
@ -117,17 +116,7 @@ public class ThreadManager {
|
||||
}
|
||||
|
||||
if(Globals.realmManager != null && Globals.realmManager.getRealms() != null){
|
||||
for(Realm realm : Globals.realmManager.getRealms()){
|
||||
if(realm.getServerWorldData() != null && realm.getServerWorldData().getServerTerrainManager() != null){
|
||||
realm.getServerWorldData().getServerTerrainManager().closeThreads();
|
||||
}
|
||||
if(realm.getServerWorldData() != null && realm.getServerWorldData().getServerBlockManager() != null){
|
||||
realm.getServerWorldData().getServerBlockManager().closeThreads();
|
||||
}
|
||||
if(realm.getDataCellManager() != null){
|
||||
realm.getDataCellManager().halt();
|
||||
}
|
||||
}
|
||||
Globals.realmManager.reset();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -245,6 +245,11 @@ public class RealmManager {
|
||||
* Resets the realm manager
|
||||
*/
|
||||
public void reset(){
|
||||
for(Realm realm : this.realms){
|
||||
if(realm.getServerWorldData() != null && realm.getServerWorldData().getServerTerrainManager() != null){
|
||||
realm.getServerWorldData().getServerTerrainManager().closeThreads();
|
||||
}
|
||||
}
|
||||
for(Realm realm : this.realms){
|
||||
if(
|
||||
realm.getServerWorldData() != null &&
|
||||
@ -254,6 +259,15 @@ public class RealmManager {
|
||||
){
|
||||
FluidAcceleratedSimulator.cleanup();
|
||||
}
|
||||
if(realm.getServerWorldData() != null && realm.getServerWorldData().getServerTerrainManager() != null){
|
||||
realm.getServerWorldData().getServerTerrainManager().closeThreads();
|
||||
}
|
||||
if(realm.getServerWorldData() != null && realm.getServerWorldData().getServerBlockManager() != null){
|
||||
realm.getServerWorldData().getServerBlockManager().closeThreads();
|
||||
}
|
||||
if(realm.getDataCellManager() != null){
|
||||
realm.getDataCellManager().halt();
|
||||
}
|
||||
}
|
||||
this.realms.clear();
|
||||
lock.lock();
|
||||
@ -262,17 +276,5 @@ public class RealmManager {
|
||||
lock.unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the realm manager, destroying all resources
|
||||
*/
|
||||
public void close(){
|
||||
for(Realm realm : this.realms){
|
||||
if(realm.getServerWorldData() != null && realm.getServerWorldData().getServerTerrainManager() != null){
|
||||
realm.getServerWorldData().getServerTerrainManager().closeThreads();
|
||||
}
|
||||
}
|
||||
this.reset();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user