mirror of
https://github.com/LucasDower/ObjToSchematic.git
synced 2025-12-11 20:15:30 +01:00
96 lines
3.7 KiB
TypeScript
96 lines
3.7 KiB
TypeScript
import { ProgressManager } from './progress';
|
|
import { StatusHandler } from './status';
|
|
import { AppError } from './util/error_util';
|
|
import { LOG_ERROR } from './util/log_util';
|
|
import { WorkerClient } from './worker_client';
|
|
import { TFromWorkerMessage, TToWorkerMessage } from './worker_types';
|
|
|
|
export async function doWork(message: TToWorkerMessage): Promise<TFromWorkerMessage> {
|
|
StatusHandler.Get.clear();
|
|
|
|
if (message.action !== 'RenderNextVoxelMeshChunk' && message.action !== 'RenderNextBlockMeshChunk') {
|
|
ProgressManager.Get.clear();
|
|
}
|
|
|
|
try {
|
|
switch (message.action) {
|
|
case 'Init':
|
|
return Promise.resolve({
|
|
action: 'Init',
|
|
result: WorkerClient.Get.init(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
case 'Import':
|
|
const result = await WorkerClient.Get.import(message.params);
|
|
|
|
return Promise.resolve({
|
|
action: 'Import',
|
|
result: result,
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
case 'SetMaterials':
|
|
return Promise.resolve({
|
|
action: 'SetMaterials',
|
|
result: WorkerClient.Get.setMaterials(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
case 'RenderMesh':
|
|
return Promise.resolve({
|
|
action: 'RenderMesh',
|
|
result: WorkerClient.Get.renderMesh(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
case 'Voxelise':
|
|
return Promise.resolve({
|
|
action: 'Voxelise',
|
|
result: WorkerClient.Get.voxelise(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
/*
|
|
case 'RenderVoxelMesh':
|
|
return {
|
|
action: 'RenderVoxelMesh',
|
|
result: WorkerClient.Get.renderVoxelMesh(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
};
|
|
*/
|
|
case 'RenderNextVoxelMeshChunk':
|
|
return Promise.resolve({
|
|
action: 'RenderNextVoxelMeshChunk',
|
|
result: WorkerClient.Get.renderChunkedVoxelMesh(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
case 'Assign':
|
|
return Promise.resolve({
|
|
action: 'Assign',
|
|
result: WorkerClient.Get.assign(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
/*
|
|
case 'RenderBlockMesh':
|
|
return {
|
|
action: 'RenderBlockMesh',
|
|
result: WorkerClient.Get.renderBlockMesh(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
};
|
|
*/
|
|
case 'RenderNextBlockMeshChunk':
|
|
return Promise.resolve({
|
|
action: 'RenderNextBlockMeshChunk',
|
|
result: WorkerClient.Get.renderChunkedBlockMesh(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
case 'Export':
|
|
return Promise.resolve({
|
|
action: 'Export',
|
|
result: WorkerClient.Get.export(message.params),
|
|
messages: StatusHandler.getAll(),
|
|
});
|
|
}
|
|
} catch (e: any) {
|
|
LOG_ERROR(e);
|
|
return { action: e instanceof AppError ? 'KnownError' : 'UnknownError', error: e as Error };
|
|
}
|
|
}
|
|
|