Autoset constraint slider max value based on mesh size

This commit is contained in:
Lucas Dower 2022-11-17 21:08:18 +00:00
parent 956667f8a4
commit 610ef893db
No known key found for this signature in database
GPG Key ID: B3EE6B8499593605
4 changed files with 16 additions and 8 deletions

View File

@ -16,6 +16,7 @@ import { UIMessageBuilder } from './ui/misc';
import { ColourSpace, EAction } from './util';
import { ASSERT } from './util/error_util';
import { LOG_ERROR, Logger } from './util/log_util';
import { Vector3 } from './vector';
import { TWorkerJob, WorkerController } from './worker_controller';
import { TFromWorkerMessage, TToWorkerMessage } from './worker_types';
@ -23,6 +24,7 @@ export class AppContext {
private _ui: UI;
private _workerController: WorkerController;
private _lastAction?: EAction;
public maxConstraint?: Vector3;
public constructor() {
Logger.Get.enableLogToFile();
@ -183,6 +185,10 @@ export class AppContext {
ASSERT(payload.action === 'Import');
const outputElement = this._ui.getActionOutput(EAction.Import);
const dimensions = payload.result.dimensions;
dimensions.mulScalar(380 / 8.0).floor();
this.maxConstraint = dimensions;
if (payload.result.triangleCount < AppConfig.Get.RENDER_TRIANGLE_THRESHOLD) {
outputElement.setTaskInProgress('render', '[Renderer]: Processing...');
this._workerController.addJob(this._renderMesh());

View File

@ -73,11 +73,11 @@ export class UI {
.registerCustomEvents((slider: SliderElement) => {
EventManager.Get.add(EAppEvent.onComboBoxChanged, (value: any) => {
if (value[0] === 'x') {
slider.setMax(AppConfig.Get.CONSTRAINT_MAXIMUM_WIDTH);
slider.setMax(this._appContext.maxConstraint?.x ?? AppConfig.Get.CONSTRAINT_MAXIMUM_WIDTH);
} else if (value[0] === 'y') {
slider.setMax(AppConfig.Get.CONSTRAINT_MAXIMUM_HEIGHT);
slider.setMax(this._appContext.maxConstraint?.y ?? AppConfig.Get.CONSTRAINT_MAXIMUM_HEIGHT);
} else {
slider.setMax(AppConfig.Get.CONSTRAINT_MAXIMUM_DEPTH);
slider.setMax(this._appContext.maxConstraint?.z ?? AppConfig.Get.CONSTRAINT_MAXIMUM_DEPTH);
}
});
}),

View File

@ -78,6 +78,7 @@ export class WorkerClient {
return {
triangleCount: this._loadedMesh.getTriangleCount(),
dimensions: this._loadedMesh.getBounds().getDimensions(),
};
}
@ -90,19 +91,19 @@ export class WorkerClient {
};
}
public voxelise(params: VoxeliseParams.Input): VoxeliseParams.Output {
ASSERT(this._loadedMesh !== undefined);
const voxeliser: IVoxeliser = VoxeliserFactory.GetVoxeliser(params.voxeliser);
this._loadedVoxelMesh = voxeliser.voxelise(this._loadedMesh, params);
this._voxelMeshChunkIndex = 0;
return {
};
}
private _voxelMeshChunkIndex = 0;
private _voxelMeshProgressHandle?: TTaskHandle;
public renderChunkedVoxelMesh(params: RenderNextVoxelMeshChunkParams.Input): RenderNextVoxelMeshChunkParams.Output {

View File

@ -27,6 +27,7 @@ export namespace ImportParams {
export type Output = {
triangleCount: number,
dimensions: Vector3,
}
}