diff --git a/assets/Data/menu/room/roomToolConfig.html b/assets/Data/menu/room/roomToolConfig.html index 9945be1f..422ce626 100644 --- a/assets/Data/menu/room/roomToolConfig.html +++ b/assets/Data/menu/room/roomToolConfig.html @@ -16,5 +16,5 @@ mainPanel { - + \ No newline at end of file diff --git a/assets/Scripts/client/clienthooks.ts b/assets/Scripts/client/clienthooks.ts index 5c5e6a7c..24b618a5 100644 --- a/assets/Scripts/client/clienthooks.ts +++ b/assets/Scripts/client/clienthooks.ts @@ -69,15 +69,17 @@ export const clientHooks: Hook[] = [ { signal: "ROOM_TOOL_TOGGLE", callback: (engine: Engine) => { - engine.singletons.loggerScripts.WARNING('asdf') - engine.singletons.loggerScripts.WARNING(JSON.stringify(globalThis)) + // engine.singletons.loggerScripts.WARNING('asdf') + // engine.singletons.loggerScripts.WARNING(JSON.stringify(globalThis)) } }, { signal: "ROOM_TOOL_MENU", callback: (engine: Engine) => { - engine.singletons.loggerScripts.WARNING('asdf') - engine.singletons.loggerScripts.WARNING(JSON.stringify(globalThis)) + console.log(JSON.stringify({})) + console.log(Object.keys(globalThis)) + // engine.singletons.loggerScripts.WARNING('asdf') + // engine.singletons.loggerScripts.WARNING(JSON.stringify(globalThis)) engine.classes.menuUtils.static.openDialog('Data/menu/room/roomToolConfig.html') } }, diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index fe2530c5..f2bc149c 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1844,6 +1844,7 @@ Out-of-context typescript compilation that falls back to in-context compilation Fix opengl bug Fix typescript out-of-context compilation caching Script recompilation work +HTML-defined buttons now directly eval in the js context instead of going through hook manager diff --git a/src/main/java/electrosphere/client/script/ClientScriptUtils.java b/src/main/java/electrosphere/client/script/ClientScriptUtils.java index 83885ef3..ac66bc8e 100644 --- a/src/main/java/electrosphere/client/script/ClientScriptUtils.java +++ b/src/main/java/electrosphere/client/script/ClientScriptUtils.java @@ -20,5 +20,17 @@ public class ClientScriptUtils { } }); } + + /** + * Evaluates a string + * @param evalCode The string to evaluate + */ + public static void eval(String evalCode){ + Globals.engineState.scriptEngine.getScriptContext().executeSynchronously(() -> { + if(Globals.engineState.scriptEngine != null && Globals.engineState.scriptEngine.isInitialized()){ + Globals.engineState.scriptEngine.getScriptContext().eval(evalCode); + } + }); + } } diff --git a/src/main/java/electrosphere/client/ui/parsing/HtmlParser.java b/src/main/java/electrosphere/client/ui/parsing/HtmlParser.java index 1513cb2a..37bbe57b 100644 --- a/src/main/java/electrosphere/client/ui/parsing/HtmlParser.java +++ b/src/main/java/electrosphere/client/ui/parsing/HtmlParser.java @@ -80,7 +80,7 @@ public class HtmlParser { callback = () -> {}; } else { callback = () -> { - ClientScriptUtils.fireSignal("uiButton", onClick); + ClientScriptUtils.eval(onClick); }; } rVal = Button.createEmptyButton(callback); diff --git a/src/main/java/electrosphere/script/ScriptContext.java b/src/main/java/electrosphere/script/ScriptContext.java index 2e603552..2e66b57b 100644 --- a/src/main/java/electrosphere/script/ScriptContext.java +++ b/src/main/java/electrosphere/script/ScriptContext.java @@ -517,4 +517,13 @@ public class ScriptContext { fireSignal.execute(sceneInstanceId,signal,args); } + /** + * Evaluates a string + * @param evalString The string + */ + public void eval(String evalString){ + Source source = Source.create("js",evalString); + context.eval(source); + } + }