diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2020-03-11 18:24:55 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-11 18:24:55 +0100 |
commit | aeff25f3134c1af34285bb1021c709936cf5377d (patch) | |
tree | 1dbbb9e75cd26db30587a50945012a87af5eae61 /platform/javascript/engine/loader.js | |
parent | 98cdf50a5591e7629bde7688ceda82b15bd9e858 (diff) | |
parent | 919bbf8077e25b9250bf3ee84220b3c4b46a3e3f (diff) |
Merge pull request #36983 from Faless/js/threads_and_more
[HTML5] Refactor JS, threads support, closures.
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(); + }); + } +}; |