mirror of
https://github.com/LucasDower/ObjToSchematic.git
synced 2025-12-11 20:15:30 +01:00
Autoset constraint slider max value based on mesh size
This commit is contained in:
parent
956667f8a4
commit
610ef893db
@ -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());
|
||||
|
||||
@ -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);
|
||||
}
|
||||
});
|
||||
}),
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -27,6 +27,7 @@ export namespace ImportParams {
|
||||
|
||||
export type Output = {
|
||||
triangleCount: number,
|
||||
dimensions: Vector3,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user