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
- _deregisterMeshChangeListeners
- _executeStep
- _isMeshInQueue
- _onMeshChange
- _registerMeshChangeListeners
- _shouldKeepLastBoxelUnmerged
- addOperation
- cancel
- clear
- clearSimple
- flush
- getOperations
- isEmpty
- run
- _onCompositeModelChange
- assignNotificationController
- assignVisualizationManager
- enqueue
- getInstance
- wakeUp
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
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