diff --git a/src/main/java/electrosphere/engine/Main.java b/src/main/java/electrosphere/engine/Main.java index 506e64b5..d99a3664 100644 --- a/src/main/java/electrosphere/engine/Main.java +++ b/src/main/java/electrosphere/engine/Main.java @@ -42,6 +42,11 @@ public class Main { public static boolean running = true; + + /** + * Tracks if ode has been initialized or not + */ + static boolean initOde = false; //target amount of time per frame public static float targetFrameRate = 60.0f; @@ -103,7 +108,10 @@ public class Main { } //init ODE - OdeHelper.initODE(); + if(!initOde){ + OdeHelper.initODE(); + initOde = true; + } //world gen testing //gen terrain @@ -437,7 +445,9 @@ public class Main { Globals.renderingEngine.clearGlobalState(); } //used to signal threads to stop - Globals.threadManager.close(); + if(Globals.threadManager != null){ + Globals.threadManager.close(); + } //reset globals for good measure (making sure no long-running threads can re-inject entities into scenes) Globals.resetGlobals(); //shut down audio engine @@ -449,7 +459,10 @@ public class Main { Globals.netMonitor.close(); } //shutdown ode - OdeHelper.closeODE(); + if(initOde){ + OdeHelper.closeODE(); + initOde = false; + } } static void sleep(int i) {