summaryrefslogtreecommitdiffstats
path: root/platform/javascript/js/engine/engine.js
diff options
context:
space:
mode:
authorFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-03-01 11:26:22 +0100
committerFabio Alessandrelli <fabio.alessandrelli@gmail.com>2021-03-05 20:11:18 +0100
commit272e491f52d4277667c35021f5fdf60655ccc917 (patch)
treea6fa2dfaf4adf223e154e8d5dc28ce348e6d35f8 /platform/javascript/js/engine/engine.js
parent4de0768cdbaf68781214601e679548a69c15c673 (diff)
downloadredot-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.js30
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;
},