-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmain.js
More file actions
69 lines (52 loc) · 1.52 KB
/
main.js
File metadata and controls
69 lines (52 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
"use strict"
var worker;
fileInput.addEventListener('change', handleFileSelect, false);
function onmessage(oEvent) {
var msg = oEvent.data;
if (msg.reason == "lightmap")
{
var img = document.createElement("IMG");
img.src = "data:image/png;base64,"+msg.res;
img.width= 32;
img.height=32;
imagesDiv.appendChild(img);
} else if (msg.reason == "geometry") {
var geo = JSON.parse(msg.geometry);
console.log("received geometry %o", geo);
} else if (msg.reason == "ready") {
worker.ready = true;
worker.startWorking();
}
else if (msg.reason == "done")
{
worker.terminate();
worker = null;
console.log("Job finished, worker terminated");
} else
console.log("Called back by the worker with unknown message '%o'!", msg);
};
function startWorking()
{
if (this.ready && this.data)
{
this.postMessage({"reason": "parseGeometry", "data": this.data});
delete this.ready;
delete this.data;
}
}
function handleFileSelect(evt) {
if (worker)
worker.terminate();
worker = new Worker("worker.js");
worker.onmessage = onmessage;
worker.startWorking = startWorking;
var files = evt.target.files; // FileList object
if (files.length != 1)
return;
var r = new FileReader();
r.onload = function(e) {
worker.data = new Int8Array(e.target.result);
worker.startWorking();
}
r.readAsArrayBuffer(files[0]);
}