Skip to content

editorGlobalsBoxelQueue

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