@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
62 lines (61 loc) • 2.19 kB
JavaScript
;
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);
}
}
}
}