diff --git a/.gitignore b/.gitignore index 64c473c9..8a453a27 100644 --- a/.gitignore +++ b/.gitignore @@ -58,3 +58,6 @@ #spreadsheet stuff */~$*.xlsx + +#General cache for the engine +/.cache \ No newline at end of file diff --git a/src/main/java/electrosphere/engine/Globals.java b/src/main/java/electrosphere/engine/Globals.java index 7c1e0522..8064170d 100644 --- a/src/main/java/electrosphere/engine/Globals.java +++ b/src/main/java/electrosphere/engine/Globals.java @@ -160,6 +160,7 @@ public class Globals { public static boolean RUN_CLIENT = true; public static boolean RUN_HIDDEN = false; //glfw session will be created with hidden window public static boolean RUN_AUDIO = true; + public static boolean RUN_SCRIPTS = false; public static int clientCharacterID; public static NetConfig netConfig = null; @@ -545,7 +546,6 @@ public class Globals { for(String path : audioToInit){ Globals.assetManager.addAudioPathToQueue(path); } - Globals.assetManager.loadAssetsInQueue(); Globals.movementAudioService.init(); } diff --git a/src/main/java/electrosphere/engine/Main.java b/src/main/java/electrosphere/engine/Main.java index c448780a..ea9edc15 100644 --- a/src/main/java/electrosphere/engine/Main.java +++ b/src/main/java/electrosphere/engine/Main.java @@ -86,8 +86,9 @@ public class Main { Globals.initGlobals(); //init scripting engine - Globals.scriptEngine.init(); - // Globals.threadManager.start(new LoadingThread(LoadingThreadType.SCRIPT_ENGINE)); + if(Globals.RUN_SCRIPTS){ + Globals.threadManager.start(new LoadingThread(LoadingThreadType.SCRIPT_ENGINE)); + } //controls if(Globals.RUN_CLIENT){ diff --git a/src/main/java/electrosphere/script/ScriptEngine.java b/src/main/java/electrosphere/script/ScriptEngine.java index 4a138299..ea536f42 100644 --- a/src/main/java/electrosphere/script/ScriptEngine.java +++ b/src/main/java/electrosphere/script/ScriptEngine.java @@ -59,6 +59,11 @@ public class ScriptEngine { */ Value hookManager; + /** + * Tracks the initialization status of the script engine + */ + boolean initialized = false; + //The files that are loaded on init to bootstrap the script engine static final String[] filesToLoadOnInit = new String[]{ //polyfills @@ -102,6 +107,7 @@ public class ScriptEngine { public void init(){ //init datastructures sourceMap = new HashMap(); + initialized = false; //create engine with flag to disable warning Engine engine = Engine.newBuilder() @@ -166,6 +172,7 @@ public class ScriptEngine { // // TODO Auto-generated catch block // e.printStackTrace(); // } + initialized = true; } /** @@ -409,6 +416,14 @@ public class ScriptEngine { Value fireSignal = this.hookManager.getMember("fireSignal"); fireSignal.execute(sceneInstanceId,signal,args); } + + /** + * Gets the initialization status of the script engine + * @return true if initialized, false otherwise + */ + public boolean isInitialized(){ + return this.initialized; + } } diff --git a/src/main/java/electrosphere/server/datacell/Realm.java b/src/main/java/electrosphere/server/datacell/Realm.java index 4eee8ff4..cdfeba3a 100644 --- a/src/main/java/electrosphere/server/datacell/Realm.java +++ b/src/main/java/electrosphere/server/datacell/Realm.java @@ -272,10 +272,12 @@ public class Realm { * @param args The arguments provided alongside the signal */ public void fireSignal(String signalName, Object ... args){ - if(this.sceneInstanceId != NO_SCENE_INSTANCE){ - Globals.scriptEngine.fireSignal(signalName, sceneInstanceId, args); - } else { - Globals.scriptEngine.fireSignal(signalName, ScriptEngine.GLOBAL_SCENE, args); + if(Globals.scriptEngine != null && Globals.scriptEngine.isInitialized()){ + if(this.sceneInstanceId != NO_SCENE_INSTANCE){ + Globals.scriptEngine.fireSignal(signalName, sceneInstanceId, args); + } else { + Globals.scriptEngine.fireSignal(signalName, ScriptEngine.GLOBAL_SCENE, args); + } } } diff --git a/src/test/java/electrosphere/test/testutils/EngineInit.java b/src/test/java/electrosphere/test/testutils/EngineInit.java index 79d94c5c..e961448b 100644 --- a/src/test/java/electrosphere/test/testutils/EngineInit.java +++ b/src/test/java/electrosphere/test/testutils/EngineInit.java @@ -36,6 +36,7 @@ public class EngineInit { Globals.RUN_CLIENT = true; Globals.RUN_SERVER = true; Globals.RUN_AUDIO = false; + Globals.RUN_SCRIPTS = false; Globals.HEADLESS = false; Profiler.PROFILE = false; NetUtils.setPort(0);