|
@@ -133,7 +133,7 @@ function decodeMesh(decoderModule: any, dataView: ArrayBufferView, attributes: {
|
|
* The worker function that gets converted to a blob url to pass into a worker.
|
|
* The worker function that gets converted to a blob url to pass into a worker.
|
|
*/
|
|
*/
|
|
function worker(): void {
|
|
function worker(): void {
|
|
- let decoderPromise: Promise<any> | undefined;
|
|
|
|
|
|
+ let decoderPromise: PromiseLike<any> | undefined;
|
|
|
|
|
|
onmessage = (event) => {
|
|
onmessage = (event) => {
|
|
const data = event.data;
|
|
const data = event.data;
|
|
@@ -142,7 +142,7 @@ function worker(): void {
|
|
const decoder = data.decoder;
|
|
const decoder = data.decoder;
|
|
if (decoder.url) {
|
|
if (decoder.url) {
|
|
importScripts(decoder.url);
|
|
importScripts(decoder.url);
|
|
- decoderPromise = createDecoderAsync(decoder.wasmBinary);
|
|
|
|
|
|
+ decoderPromise = DracoDecoderModule({ wasmBinary: decoder.wasmBinary });
|
|
}
|
|
}
|
|
postMessage("done");
|
|
postMessage("done");
|
|
break;
|
|
break;
|
|
@@ -152,7 +152,7 @@ function worker(): void {
|
|
throw new Error("Draco decoder module is not available");
|
|
throw new Error("Draco decoder module is not available");
|
|
}
|
|
}
|
|
decoderPromise.then((decoder) => {
|
|
decoderPromise.then((decoder) => {
|
|
- decodeMesh(decoder.module, data.dataView, data.attributes, (indices) => {
|
|
|
|
|
|
+ decodeMesh(decoder, data.dataView, data.attributes, (indices) => {
|
|
postMessage({ id: "indices", value: indices }, [indices.buffer]);
|
|
postMessage({ id: "indices", value: indices }, [indices.buffer]);
|
|
}, (kind, data) => {
|
|
}, (kind, data) => {
|
|
postMessage({ id: kind, value: data }, [data.buffer]);
|
|
postMessage({ id: kind, value: data }, [data.buffer]);
|
|
@@ -304,7 +304,7 @@ export class DracoCompression implements IDisposable {
|
|
|
|
|
|
if (numWorkers && typeof Worker === "function") {
|
|
if (numWorkers && typeof Worker === "function") {
|
|
this._workerPoolPromise = decoderInfo.wasmBinaryPromise.then((decoderWasmBinary) => {
|
|
this._workerPoolPromise = decoderInfo.wasmBinaryPromise.then((decoderWasmBinary) => {
|
|
- const workerContent = `${createDecoderAsync}${decodeMesh}(${worker})()`;
|
|
|
|
|
|
+ const workerContent = `${decodeMesh}(${worker})()`;
|
|
const workerBlobUrl = URL.createObjectURL(new Blob([workerContent], { type: "application/javascript" }));
|
|
const workerBlobUrl = URL.createObjectURL(new Blob([workerContent], { type: "application/javascript" }));
|
|
const workerPromises = new Array<Promise<Worker>>(numWorkers);
|
|
const workerPromises = new Array<Promise<Worker>>(numWorkers);
|
|
for (let i = 0; i < workerPromises.length; i++) {
|
|
for (let i = 0; i < workerPromises.length; i++) {
|