UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

62 lines (61 loc) 2.19 kB
"use strict"; import { TypedSopNode } from "./_Base"; import { OPERATIONS_COMPOSER_NODE_TYPE } from "../../operations/_Base"; import { InputCloneMode } from "../../poly/InputCloneMode"; import { NodeParamsConfig } from "../utils/params/ParamsConfig"; class OperationsComposerSopParamConfig extends NodeParamsConfig { } const ParamsConfig = new OperationsComposerSopParamConfig(); export class OperationsComposerSopNode extends TypedSopNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; this._inputConfigsByOperationContainer = /* @__PURE__ */ new WeakMap(); } static type() { return OPERATIONS_COMPOSER_NODE_TYPE; } initializeNode() { this.io.inputs.initInputsClonedState(InputCloneMode.FROM_NODE); } setOutputOperationContainer(operationContainer) { this._outputOperationContainer = operationContainer; } outputOperationContainer() { return this._outputOperationContainer; } addInputConfig(operation, inputConfig) { let existing_map = this._inputConfigsByOperationContainer.get(operation); if (!existing_map) { existing_map = /* @__PURE__ */ new Map(); this._inputConfigsByOperationContainer.set(operation, existing_map); } existing_map.set(inputConfig.operation_input_index, inputConfig.node_input_index); } addOperationContainerWithPathParamResolveRequired(operationContainer) { if (!this._operationContainersRequiringResolve) { this._operationContainersRequiringResolve = []; } this._operationContainersRequiringResolve.push(operationContainer); } resolveOperationContainersPathParams() { if (!this._operationContainersRequiringResolve) { return; } for (const operationContainer of this._operationContainersRequiringResolve) { operationContainer.resolvePathParams(this); } } async cook(inputCoreGroups) { if (this._outputOperationContainer) { this._outputOperationContainer.setDirty(); const coreGroup = await this._outputOperationContainer.compute( inputCoreGroups, this._inputConfigsByOperationContainer ); if (coreGroup) { this.setCoreGroup(coreGroup); } } } }