summaryrefslogtreecommitdiff
path: root/webhogg/wasm/pkg
diff options
context:
space:
mode:
authornatrixaeria <janng@gmx.de>2019-06-13 03:21:53 +0200
committernatrixaeria <janng@gmx.de>2019-06-13 03:21:53 +0200
commit7884252333cc102a8144e4eafc36f9ef605b1be7 (patch)
tree622630a07c6439a8970178548e20966320cc4fb1 /webhogg/wasm/pkg
parent5de862b4d175578ed67e177d482ac31bf811d486 (diff)
Draw violet background
Diffstat (limited to 'webhogg/wasm/pkg')
-rw-r--r--webhogg/wasm/pkg/main.js16
-rw-r--r--webhogg/wasm/pkg/worker.js22
2 files changed, 27 insertions, 11 deletions
diff --git a/webhogg/wasm/pkg/main.js b/webhogg/wasm/pkg/main.js
index f16a775..76afa1c 100644
--- a/webhogg/wasm/pkg/main.js
+++ b/webhogg/wasm/pkg/main.js
@@ -17,12 +17,22 @@ async function main() {
source = await fetchedSource.arrayBuffer();
const modules = [
- ['graphics', source, [offCanvas], 100],
- ['logic', source, [], 1000]
+ { type: 'graphics',
+ source: source,
+ canvas: offCanvas,
+ dt: 10000 },
+ { type: 'logic',
+ source: source,
+ canvas: [],
+ dt: 10000 },
];
for (var module of modules) {
let worker = new Worker('pkg/worker.js');
- worker.postMessage(module, module[2]);
+ if (module.type === 'graphics') {
+ worker.postMessage(module, [module.canvas]);
+ } else {
+ worker.postMessage(module);
+ }
workers.push(worker);
}
}
diff --git a/webhogg/wasm/pkg/worker.js b/webhogg/wasm/pkg/worker.js
index 0b68374..780ea6f 100644
--- a/webhogg/wasm/pkg/worker.js
+++ b/webhogg/wasm/pkg/worker.js
@@ -1,11 +1,17 @@
-onmessage = async function (e) {
+let data = null;
+
+onmessage = function (e) {
+ data = e.data;
+
importScripts('../bin/webhogg-wasm.js');
- let type = e.data[0];
- let source = e.data[1];
- let args = e.data[2];
- let dt = e.data[3];
- let ctx = await wasm_bindgen(source);
+ wasm_bindgen(data.source).then(ctx => {
+ if (data.type === 'graphics') {
+ wasm_bindgen.start_graphics(data.canvas);
+ setInterval(wasm_bindgen.loop_graphics, data.dt);
+ } else if (data.type === 'logic') {
+ wasm_bindgen.start_logic();
+ setInterval(wasm_bindgen.loop_logic, data.dt);
+ }
- ctx['start_' + type].apply(args);
- setInterval(ctx['loop_' + type], dt);
+ });
}