summaryrefslogtreecommitdiff
path: root/platform/javascript/engine/loader.js
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-03-11 18:24:55 +0100
committerGitHub <noreply@github.com>2020-03-11 18:24:55 +0100
commitaeff25f3134c1af34285bb1021c709936cf5377d (patch)
tree1dbbb9e75cd26db30587a50945012a87af5eae61 /platform/javascript/engine/loader.js
parent98cdf50a5591e7629bde7688ceda82b15bd9e858 (diff)
parent919bbf8077e25b9250bf3ee84220b3c4b46a3e3f (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.js33
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();
+ });
+ }
+};