21 lines
859 B
JavaScript
21 lines
859 B
JavaScript
|
|
'use strict';
|
||
|
|
|
||
|
|
importScripts('./pixel-codec.js');
|
||
|
|
|
||
|
|
const PixelCodec = self.PixelIslandModules.PixelCodec;
|
||
|
|
|
||
|
|
self.onmessage = (event) => {
|
||
|
|
const { id, type, payload } = event.data || {};
|
||
|
|
try {
|
||
|
|
if (type === 'buildPixelBlobs') {
|
||
|
|
const palette = Array.isArray(payload?.palette) ? payload.palette : [];
|
||
|
|
const defaultColorCode = payload?.defaultColorCode || 'a';
|
||
|
|
const blobs = (payload?.assets || []).map((asset) => PixelCodec.buildPixelBlob(asset?.faces?.right || asset?.pixels || '', PixelCodec.assetWidth(asset), PixelCodec.assetHeight(asset), palette, defaultColorCode));
|
||
|
|
self.postMessage({ id, ok: true, result: blobs });
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
self.postMessage({ id, ok: false, error: 'unsupported_worker_request' });
|
||
|
|
} catch (error) {
|
||
|
|
self.postMessage({ id, ok: false, error: error?.message || 'worker_error' });
|
||
|
|
}
|
||
|
|
};
|