From 84e5d33173c295d869bcd50a561bcd2f3cfa0d08 Mon Sep 17 00:00:00 2001 From: austin Date: Fri, 16 May 2025 13:01:40 -0400 Subject: [PATCH] html-button direct eval --- assets/Data/menu/room/roomToolConfig.html | 2 +- assets/Scripts/client/clienthooks.ts | 10 ++++++---- docs/src/progress/renderertodo.md | 1 + .../client/script/ClientScriptUtils.java | 12 ++++++++++++ .../electrosphere/client/ui/parsing/HtmlParser.java | 2 +- .../java/electrosphere/script/ScriptContext.java | 9 +++++++++ 6 files changed, 30 insertions(+), 6 deletions(-) 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); + } + }