Added debug option to disable worker thread

This commit is contained in:
Lucas Dower 2022-09-16 19:01:15 +01:00
parent 599e61bb92
commit 6bcaef1302
5 changed files with 19 additions and 16 deletions

View File

@ -144,8 +144,8 @@ export class AppContext {
const outputElement = this._ui.getActionOutput(EAction.Import);
if (payload.result.triangleCount < AppConfig.RENDER_TRIANGLE_THRESHOLD) {
this._workerController.addJob(this._renderMesh());
outputElement.setTaskInProgress('render', '[Renderer]: Processing...');
this._workerController.addJob(this._renderMesh());
} else {
const message = `Will not render mesh as its over ${AppConfig.RENDER_TRIANGLE_THRESHOLD.toLocaleString()} triangles.`;
outputElement.setTaskComplete('render', '[Renderer]: Stopped', [message], 'warning');
@ -217,8 +217,8 @@ export class AppContext {
ASSERT(payload.action === 'Voxelise');
const outputElement = this._ui.getActionOutput(EAction.Voxelise);
this._workerController.addJob(this._renderVoxelMesh());
outputElement.setTaskInProgress('render', '[Renderer]: Processing...');
this._workerController.addJob(this._renderVoxelMesh());
};
return { id: 'Voxelise', payload: payload, callback: callback };
@ -290,8 +290,8 @@ export class AppContext {
ASSERT(payload.action === 'Assign');
const outputElement = this._ui.getActionOutput(EAction.Assign);
this._workerController.addJob(this._renderBlockMesh());
outputElement.setTaskInProgress('render', '[Renderer]: Processing...');
this._workerController.addJob(this._renderBlockMesh());
};
return { id: 'Assign', payload: payload, callback: callback };

View File

@ -36,4 +36,7 @@ export namespace AppConfig {
/** Whether of not all logs should be saved to a file */
export const LOG_TO_FILE = true;
/** Whether or not to use a worker thread. You should probably never disable this unless debugging. */
export const USE_WORKER_THREAD = true;
}

View File

@ -13,11 +13,6 @@ export abstract class IExporter {
*/
public abstract getFileExtension(): string;
/** */
public getFormatDisclaimer(): TOptional<string> {
return;
}
public abstract export(blockMesh: BlockMesh, filePath: string): boolean;
public getFormatFilter() {

View File

@ -78,16 +78,12 @@ export class Schematic extends IExporter {
return 'Schematic';
}
getFormatDisclaimer() {
return 'Schematic files only support pre-1.13 blocks. As a result, all blocks will be exported as Stone. To export the blocks, use the .litematic format with the Litematica mod.';
}
getFileExtension(): string {
return 'schematic';
}
public override export(blockMesh: BlockMesh, filePath: string): boolean {
const bounds = blockMesh.getVoxelMesh()?.getBounds();
const bounds = blockMesh.getVoxelMesh().getBounds();
this._sizeVector = Vector3.sub(bounds.max, bounds.min).add(1);
const nbt = this._convertToNBT(blockMesh);

View File

@ -1,5 +1,7 @@
import { AppConfig } from './config';
import { ASSERT } from './util/error_util';
import { LOG, TIME_END, TIME_START } from './util/log_util';
import { doWork } from './worker';
import { TFromWorkerMessage, TToWorkerMessage } from './worker_types';
export type TWorkerJob = {
@ -51,10 +53,10 @@ export class WorkerController {
}
private _tryStartNextJob() {
if (this.isBusy()) {
if (this.isBusy() && AppConfig.USE_WORKER_THREAD) {
return;
}
this._jobPending = this._jobQueue.shift();
if (this._jobPending === undefined) {
return;
@ -62,6 +64,13 @@ export class WorkerController {
LOG('[WorkerController]: Starting Job', this._jobPending.id, `(${this._jobQueue.length} remaining)`);
TIME_START(this._jobPending.id);
this._worker.postMessage(this._jobPending.payload);
if (AppConfig.USE_WORKER_THREAD) {
this._worker.postMessage(this._jobPending.payload);
} else {
const result = doWork(this._jobPending.payload);
if (this._jobPending.callback) {
this._jobPending.callback(result);
}
}
}
}