diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2021-03-01 11:26:22 +0100 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2021-03-05 20:11:18 +0100 |
commit | 272e491f52d4277667c35021f5fdf60655ccc917 (patch) | |
tree | a6fa2dfaf4adf223e154e8d5dc28ce348e6d35f8 /platform/javascript/js/engine/engine.js | |
parent | 4de0768cdbaf68781214601e679548a69c15c673 (diff) | |
download | redot-engine-272e491f52d4277667c35021f5fdf60655ccc917.tar.gz |
[HTML5] Preloader fetch, streaming instantiation.
Diffstat (limited to 'platform/javascript/js/engine/engine.js')
-rw-r--r-- | platform/javascript/js/engine/engine.js | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/platform/javascript/js/engine/engine.js b/platform/javascript/js/engine/engine.js index c51955ed3d..e2d27c4c02 100644 --- a/platform/javascript/js/engine/engine.js +++ b/platform/javascript/js/engine/engine.js @@ -42,7 +42,7 @@ const Engine = (function () { Engine.load = function (basePath) { if (loadPromise == null) { loadPath = basePath; - loadPromise = preloader.loadPromise(`${loadPath}.wasm`); + loadPromise = preloader.loadPromise(`${loadPath}.wasm`, true); requestAnimationFrame(preloader.animateProgress); } return loadPromise; @@ -98,21 +98,25 @@ const Engine = (function () { } Engine.load(basePath); } - preloader.setProgressFunc(this.config.onProgress); - let config = this.config.getModuleConfig(loadPath, loadPromise); const me = this; - initPromise = new Promise(function (resolve, reject) { - Godot(config).then(function (module) { - module['initFS'](me.config.persistentPaths).then(function (fs_err) { - me.rtenv = module; - if (me.config.unloadAfterInit) { - Engine.unload(); - } - resolve(); - config = null; + function doInit(promise) { + return promise.then(function (response) { + return Godot(me.config.getModuleConfig(loadPath, response.clone())); + }).then(function (module) { + const paths = me.config.persistentPaths; + return module['initFS'](paths).then(function (err) { + return Promise.resolve(module); }); + }).then(function (module) { + me.rtenv = module; + if (me.config.unloadAfterInit) { + Engine.unload(); + } + return Promise.resolve(); }); - }); + } + preloader.setProgressFunc(this.config.onProgress); + initPromise = doInit(loadPromise); return initPromise; }, |