From c3fdf122bd874bd0aedf90eff0d57cc440fc6421 Mon Sep 17 00:00:00 2001 From: natrixaeria Date: Thu, 13 Jun 2019 00:38:21 +0200 Subject: Split code into graphics and logic loop --- webhogg/wasm/pkg/main.js | 22 +++++++++++++++++++--- webhogg/wasm/pkg/worker.js | 12 +++++++----- 2 files changed, 26 insertions(+), 8 deletions(-) (limited to 'webhogg/wasm/pkg') diff --git a/webhogg/wasm/pkg/main.js b/webhogg/wasm/pkg/main.js index ce96ee5..f16a775 100644 --- a/webhogg/wasm/pkg/main.js +++ b/webhogg/wasm/pkg/main.js @@ -1,12 +1,28 @@ +workers = []; + +function exit() { + for (var worker of workers) { + worker.terminate(); + } + console.clear(); +} + async function main() { let fetchingSource = fetch('bin/webhogg-wasm.wasm'); + + let canvasElement = document.getElementById('c'); + let offCanvas = canvasElement.transferControlToOffscreen(); + let fetchedSource = await fetchingSource; source = await fetchedSource.arrayBuffer(); - let workers = []; - for (var type of ['graphics', 'logic']) { + const modules = [ + ['graphics', source, [offCanvas], 100], + ['logic', source, [], 1000] + ]; + for (var module of modules) { let worker = new Worker('pkg/worker.js'); - worker.postMessage([type, source]); + worker.postMessage(module, module[2]); workers.push(worker); } } diff --git a/webhogg/wasm/pkg/worker.js b/webhogg/wasm/pkg/worker.js index bd11676..0b68374 100644 --- a/webhogg/wasm/pkg/worker.js +++ b/webhogg/wasm/pkg/worker.js @@ -1,9 +1,11 @@ onmessage = async function (e) { importScripts('../bin/webhogg-wasm.js'); - let ctx = await wasm_bindgen(e.data[1]); + 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); - if (e.data[0] === 'graphics') - ctx.start_graphics(); - else if (e.data[0] === 'logic') - ctx.start_logic(); + ctx['start_' + type].apply(args); + setInterval(ctx['loop_' + type], dt); } -- cgit v1.2.3-54-g00ecf