Skip to content

editor › Globals › BoxelQueue

Class: BoxelQueue

The BoxelQueue accepts consecutive csg operations, each with a base and candidate mesh.

It takes care of optimizing them, executing them and handling changes such as merged or split meshes that affect other operations or result in the split-off of a new assembly.

Hierarchy

  • BoxelQueue

Index

Properties

Methods

Properties

Private canceled

• canceled: boolean = false

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:148


Private operationPromise

• operationPromise: Promise‹any› | null = null

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:150


Private queue

• queue: IQueueElement[] = []

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:152


Static compositeModel

▪ compositeModel: CompositeModel = null

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:46


Static notificationController

▪ notificationController: any

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:47


Static visualizationManager

▪ visualizationManager: VisualizationManager = null

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:45

Methods

Private _deregisterMeshChangeListeners

▸ _deregisterMeshChangeListeners(operation: CSGMeshOperation): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:344

Removes event change listeners for all meshes that are not in the queue anymore

Parameters:

Name Type Description
operation CSGMeshOperation -

Returns: void


Private _executeStep

▸ _executeStep(): Promise‹any›

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:245

Start the queue (will start the next step when the previous is finished)

Returns: Promise‹any›


Private _isMeshInQueue

▸ _isMeshInQueue(mesh: Mesh): boolean

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:372

Parameters:

Name Type
mesh Mesh

Returns: boolean


Private _onMeshChange

▸ _onMeshChange(event: MeshChangeEvent): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:390

Called if one of the meshes in the queue changes. We need to react to merged and split meshes to maintain correct "identities" in the queue.

Parameters:

Name Type
event MeshChangeEvent

Returns: void


Private _registerMeshChangeListeners

▸ _registerMeshChangeListeners(operation: CSGMeshOperation): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:360

Adds event change listeners for all meshes that are not yet in the queue

Parameters:

Name Type Description
operation CSGMeshOperation -

Returns: void


Private _shouldKeepLastBoxelUnmerged

▸ _shouldKeepLastBoxelUnmerged(): boolean

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:233

Returns: boolean


addOperation

▸ addOperation(operation: CSGMeshOperation, onFailure: OnFailureBehavior, allowPostTransform: boolean): object

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:193

Parameters:

Name Type Default
operation CSGMeshOperation -
onFailure OnFailureBehavior -
allowPostTransform boolean false

Returns: object

  • operationFinishedPromise: Promise‹void›

  • operationStartedPromise: Promise‹void›


cancel

▸ cancel(): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:183

Cancels running operations, empties the queue.

Returns: void


clear

▸ clear(): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:157

This clears the boxel queue and cleans up the objects, that would have been relevant for the cleared operations.

Returns: void


clearSimple

▸ clearSimple(): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:176

This clears the boxel queue, but leaves the associated assemblies in their current state.

Returns: void


flush

▸ flush(): Promise‹any›

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:226

Calling this will execute all operations in the queue.

Returns: Promise‹any›


getOperations

▸ getOperations(): IQueueElement[]

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:219

Returns: IQueueElement[]


isEmpty

▸ isEmpty(): boolean

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:169

Returns if the BoxelQueue is currently empty

Returns: boolean


run

▸ run(): Promise‹any›

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:215

Returns: Promise‹any›


Static Private _onCompositeModelChange

▸ _onCompositeModelChange(compositeModel: any): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:142

This is called on undo, the queue is not running then and needs to be started.

Parameters:

Name Type Description
compositeModel any -

Returns: void


Static assignNotificationController

▸ assignNotificationController(notificationController: any): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:60

Parameters:

Name Type
notificationController any

Returns: void


Static assignVisualizationManager

▸ assignVisualizationManager(visualizationManager: any): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:49

Parameters:

Name Type
visualizationManager any

Returns: void


Static enqueue

▸ enqueue(base: Mesh, candidates: Mesh[], operationType: Exclude‹CSGOperationType, SPLIT›, compositeModel: CompositeModel, onFailure?: OnFailureBehavior, allowPostTransform?: boolean): any

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:86

Push a new operation onto the queue for baseAssembly

Parameters:

Name Type Description
base Mesh base mesh
candidates Mesh[] all candidates will be applied after each other to the result of the previous candidate
operationType Exclude‹CSGOperationType, SPLIT› what CSGOperationType should be performed
compositeModel CompositeModel the compositeModel which holds the boxelQueue instance to make it save-able
onFailure? OnFailureBehavior defines how the CSG should react if the operation fails: delete candidate (default) or split up.
allowPostTransform? boolean if true the boxel will not be merged and stay until another is added. Can be rotated.

Returns: any

a promise that resolves when this operation started

▸ enqueue(base: Mesh, candidates: Mesh[], operationType: SPLIT, compositeModel: CompositeModel, params: ISplitParams, onFailure?: any, allowPostTransform?: any): any

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:94

Parameters:

Name Type
base Mesh
candidates Mesh[]
operationType SPLIT
compositeModel CompositeModel
params ISplitParams
onFailure? any
allowPostTransform? any

Returns: any


Static getInstance

▸ getInstance(compositeModel: any): any

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:72

Parameters:

Name Type
compositeModel any

Returns: any


Static wakeUp

▸ wakeUp(): void

Defined in src/modules/kyub.core.boxel/src/BoxelQueue.ts:64

Returns: void