From 0c46703f792063da768f1f43df9956d6e47f878d Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Tue, 19 Sep 2023 14:30:28 +0900 Subject: [PATCH] More robust initialization Don't wait in a loop for required js stuff to appear, do the init. when the WASM starts running. --- src/ems.cc | 12 ++++++++++++ src/ems.h | 1 + src/main.cc | 2 ++ wasm_build/client.js | 12 ------------ 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/ems.cc b/src/ems.cc index 9359293..89c6cc4 100644 --- a/src/ems.cc +++ b/src/ems.cc @@ -32,6 +32,12 @@ EM_JS(int, canvas_get_height, (), { return document.getElementById("canvas").clientHeight; }); EM_JS(float, get_random, (), { return Math.random(); }); + +EM_JS(void, js_rune_init, (), { + console.log("WASM loaded, calling Rune init..."); + do_rune_init(); + console.log("Called Rune init.") +}); #endif #include @@ -99,6 +105,12 @@ float call_js_get_random() { #endif } +void call_js_init_rune() { +#ifdef __EMSCRIPTEN__ + js_rune_init(); +#endif +} + #ifdef __EMSCRIPTEN__ void fetch_avatar1_url_success(emscripten_fetch_t *fetch) { GameRenderer *game = (GameRenderer *)fetch->userData; diff --git a/src/ems.h b/src/ems.h index dcd9185..e729034 100644 --- a/src/ems.h +++ b/src/ems.h @@ -9,6 +9,7 @@ extern void call_js_set_matchup_done(); extern int call_js_get_canvas_width(); extern int call_js_get_canvas_height(); extern float call_js_get_random(); +extern void call_js_init_rune(); extern void fetch_avatar1_url(const char *url, void *game_ptr); extern void fetch_avatar2_url(const char *url, void *game_ptr); diff --git a/src/main.cc b/src/main.cc index 331afe4..1f1cbfa 100644 --- a/src/main.cc +++ b/src/main.cc @@ -74,6 +74,8 @@ int main() { emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, renderer.get(), false, resize_event_callback); + call_js_init_rune(); + emscripten_set_main_loop_arg(game_update, renderer.get(), 0, 1); #else SetTargetFPS(60); diff --git a/wasm_build/client.js b/wasm_build/client.js index 3b9308c..e3df29d 100644 --- a/wasm_build/client.js +++ b/wasm_build/client.js @@ -81,15 +81,3 @@ Rune.initClient({ }, }); } - -let em_checking_interval_id = setInterval( - () => { - if (typeof Module !== "undefined" - && typeof Module.ccall !== "undefined" - && typeof wasmExports !== "undefined") { - do_rune_init(); - clearInterval(em_checking_interval_id); - console.log("Rune initialized!"); - } - }, 500 -); -- 2.49.0