diff --git a/platform/web/js/engine/config.js b/platform/web/js/engine/config.js index a7134da6faa..8c4e1b1b248 100644 --- a/platform/web/js/engine/config.js +++ b/platform/web/js/engine/config.js @@ -271,12 +271,13 @@ const InternalConfig = function (initConfig) { // eslint-disable-line no-unused- */ Config.prototype.getModuleConfig = function (loadPath, response) { let r = response; + const gdext = this.gdextensionLibs; return { 'print': this.onPrint, 'printErr': this.onPrintError, 'thisProgram': this.executable, 'noExitRuntime': false, - 'dynamicLibraries': [`${loadPath}.side.wasm`], + 'dynamicLibraries': [`${loadPath}.side.wasm`].concat(this.gdextensionLibs), 'instantiateWasm': function (imports, onSuccess) { function done(result) { onSuccess(result['instance'], result['module']); @@ -300,6 +301,8 @@ const InternalConfig = function (initConfig) { // eslint-disable-line no-unused- return `${loadPath}.audio.worklet.js`; } else if (path.endsWith('.js')) { return `${loadPath}.js`; + } else if (path in gdext) { + return path; } else if (path.endsWith('.side.wasm')) { return `${loadPath}.side.wasm`; } else if (path.endsWith('.wasm')) { diff --git a/platform/web/js/engine/engine.js b/platform/web/js/engine/engine.js index 7e24ad9ae23..04c4c44c5ee 100644 --- a/platform/web/js/engine/engine.js +++ b/platform/web/js/engine/engine.js @@ -163,25 +163,19 @@ const Engine = (function () { me.rtenv['initConfig'](config); // Preload GDExtension libraries. - const libs = []; if (me.config.gdextensionLibs.length > 0 && !me.rtenv['loadDynamicLibrary']) { return Promise.reject(new Error('GDExtension libraries are not supported by this engine version. ' + 'Enable "Extensions Support" for your export preset and/or build your custom template with "dlink_enabled=yes".')); } - me.config.gdextensionLibs.forEach(function (lib) { - libs.push(me.rtenv['loadDynamicLibrary'](lib, { 'loadAsync': true })); - }); - return Promise.all(libs).then(function () { - return new Promise(function (resolve, reject) { - preloader.preloadedFiles.forEach(function (file) { - me.rtenv['copyToFS'](file.path, file.buffer); - }); - preloader.preloadedFiles.length = 0; // Clear memory - me.rtenv['callMain'](me.config.args); - initPromise = null; - me.installServiceWorker(); - resolve(); - }); + return new Promise(function (resolve, reject) { + for (const file of preloader.preloadedFiles) { + me.rtenv['copyToFS'](file.path, file.buffer); + } + preloader.preloadedFiles.length = 0; // Clear memory + me.rtenv['callMain'](me.config.args); + initPromise = null; + me.installServiceWorker(); + resolve(); }); }); },