diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2020-03-11 11:55:28 +0100 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2020-03-11 16:09:31 +0100 |
commit | 919bbf8077e25b9250bf3ee84220b3c4b46a3e3f (patch) | |
tree | a4f6f9774b058982c075be89603be5fd303c2b6f /platform/javascript/engine/loader.js | |
parent | 87d50da9fc6d8e2ed6b09e830bae9473c5a13388 (diff) | |
download | redot-engine-919bbf8077e25b9250bf3ee84220b3c4b46a3e3f.tar.gz |
[HTML5] Refactor JS, threads support, closures.
- Refactored the Engine code, splitted across files.
- Use MODULARIZE option to build emscripten code into it's own closure.
- Enable lto support (saves ~2MiB in release).
- Enable optional closure compiler pass for JS and generated code.
- Enable optional pthreads support.
- Can now build with tools=yes (not much to see yet).
- Dropped some deprecated code for older toolchains.
Diffstat (limited to 'platform/javascript/engine/loader.js')
-rw-r--r-- | platform/javascript/engine/loader.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/platform/javascript/engine/loader.js b/platform/javascript/engine/loader.js new file mode 100644 index 0000000000..d27fbf612e --- /dev/null +++ b/platform/javascript/engine/loader.js @@ -0,0 +1,33 @@ +var Loader = /** @constructor */ function() { + + this.env = null; + + this.init = function(loadPromise, basePath, config) { + var me = this; + return new Promise(function(resolve, reject) { + var cfg = config || {}; + cfg['locateFile'] = Utils.createLocateRewrite(basePath); + cfg['instantiateWasm'] = Utils.createInstantiatePromise(loadPromise); + loadPromise = null; + Godot(cfg).then(function(module) { + me.env = module; + resolve(); + }); + }); + } + + this.start = function(preloadedFiles, args) { + var me = this; + return new Promise(function(resolve, reject) { + if (!me.env) { + reject(new Error('The engine must be initialized before it can be started')); + } + preloadedFiles.forEach(function(file) { + Utils.copyToFS(me.env['FS'], file.path, file.buffer); + }); + preloadedFiles.length = 0; // Clear memory + me.env['callMain'](args); + resolve(); + }); + } +}; |