@sohale/implisolid
Version:
A Solid Modelling Kernel in Javascript based on Implicit Surfaces, for MP5 file format
107 lines (91 loc) • 3.42 kB
HTML
<html>
<script>;
var worker = new Worker('./e1_emworker.compiled.js');
var api_info = {
test: {
funcName: "worker_function",
callbackId: 3,
},
};
/*
var api_revlookup = {
[api_info.test]: "test",
};
*/
function test_data_worker(arguments_data_buffer) {
// The protocol used by Emscripten
worker.postMessage( {
funcName: api_info.test.funcName,
callbackId: api_info.test.callbackId,
data: arguments_data_buffer,
// 'finalResponse': false,
},
[arguments_data_buffer] // rtransferable only if .buffer of a TypedArray
);
/*
// worker.postMessage(temp_copy);
if (false) {
var a1 = new Float32Array([1,2,3.1415926536123456789012345678901234567890,4]);
worker.postMessage(a1);
// [12345678,2]
}
*/
}
function request() {
/*
var params = {
resolution: 1,
box: {xmin: 1000, xmax: 2000},
};
var mcsettings = JSON.stringify(params);
var b16 = new Uint16Array([5,6,65000,10]);
*/
// new idea!
var verts = new Float32Array([3.141592651234567890123456780,1,2, 3,4,5, 6,7,8, 9,0.5,1.5]);
var faces = new Uint16Array([0,1,2, 1,2,3, 0,1,3, 0,2,3]);
var b8verts=new Uint8Array(verts.buffer);
var b8faces=new Uint8Array(faces.buffer);
//var b8verts= "messssssssage";
//var b8verts= verts;
//test_data_worker(b8verts, [b8verts.buffer]); // works
//test_data_worker(b8verts.buffer, [b8verts.buffer]); // works
console.log("before sending ", b8verts);
test_data_worker(b8verts.buffer); // .buffer to make it transferrable
console.log("after sending ", b8verts);
//test_data_worker([b8verts,b8faces]); // sends two bytes instead
//test_data_worker([b, 60, b]);
//test_data_worker({b16:b, d:60, b2:b});
/*
* [1,2] -> 1 02 //
* [12345678,2] -> 4e 02 // turns this into a two bytes!
* [12345677, 3] -> 4d 03
* ["hi.abc", 3] -> 00 03
*/
setTimeout(function(){console.info("delayed: ", b8verts);}, 3000);
}
worker.addEventListener('message', function(event) {
// event.data is {callbackId: -1, finalResponse: true, data: 0}
// console.log("Message received from worker:", event.data, event); // event
switch (event.data.callbackId) {
case api_info.test.callbackId: //api_revlookup.:
// console.log("Result of TEST caught from web worker", event.data);
// Reinterpret data
var uint8Arr = event.data.data;
//var returned_message = new Float32Array(uint8Arr); //new string(uint8Arr);
var returned_message = String.fromCharCode.apply(null, uint8Arr)
console.log(returned_message);
break;
default:
console.error("Unrecognised message sent back.");
}
}, false);
/*
worker.onmessage = function(event) {
console.log("Message received from worker:", event);
console.log(event.data);
}
*/
request();
console.log("request() sent.");
</script>