2016-10-06 11:40:09 +00:00
|
|
|
importScripts('../vendor/three.min.js');
|
|
|
|
|
|
|
|
// Special version of ViziCities without controls (no DOM errors)
|
|
|
|
importScripts('../../dist/vizicities-worker.min.js');
|
|
|
|
|
|
|
|
const DEBUG = false;
|
|
|
|
|
2016-12-19 14:37:05 +00:00
|
|
|
if (DEBUG) { console.log('Worker started', Date.now()); }
|
2016-10-06 11:40:09 +00:00
|
|
|
|
|
|
|
// Send startup message to main thread
|
|
|
|
postMessage({
|
|
|
|
type: 'startup',
|
2016-12-19 14:37:05 +00:00
|
|
|
payload: Date.now()
|
2016-10-06 11:40:09 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
// Recieve message from main thread
|
|
|
|
onmessage = (event) => {
|
|
|
|
if (!event.data.method) {
|
|
|
|
postMessage({
|
|
|
|
type: 'error',
|
|
|
|
payload: 'No method provided'
|
|
|
|
});
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2016-12-19 14:37:05 +00:00
|
|
|
var time = Date.now();
|
2016-10-06 11:40:09 +00:00
|
|
|
if (DEBUG) { console.log('Message received from main thread', time, event.data); }
|
|
|
|
// if (DEBUG) console.log('Time to receive message', time - event.data);
|
|
|
|
|
|
|
|
// Run method
|
|
|
|
// if (!methods[event.data.method]) {
|
|
|
|
// postMessage({
|
|
|
|
// type: 'error',
|
|
|
|
// payload: 'Method not found'
|
|
|
|
// });
|
|
|
|
|
|
|
|
// return;
|
|
|
|
// }
|
|
|
|
|
|
|
|
var methods = event.data.method.split('.');
|
|
|
|
|
|
|
|
var _method = VIZI[methods[0]];
|
|
|
|
|
|
|
|
if (methods.length > 1) {
|
|
|
|
for (var i = 1; i < methods.length; i++) {
|
|
|
|
_method = _method[methods[i]];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Call method with given arguments
|
|
|
|
_method.apply(this, event.data.args).then((result) => {
|
2016-12-19 14:37:05 +00:00
|
|
|
if (DEBUG) { console.log('Message sent from worker', Date.now()); }
|
2016-10-06 11:40:09 +00:00
|
|
|
|
|
|
|
// Return results
|
|
|
|
postMessage({
|
|
|
|
type: 'result',
|
|
|
|
payload: result.data
|
|
|
|
}, result.transferrables);
|
|
|
|
});
|
|
|
|
};
|