UNPKG

@polygonjs/polygonjs

Version:

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

51 lines (50 loc) 2 kB
"use strict"; import { TypedSopNode } from "./_Base"; import { ObjectsLayoutSopOperation } from "../../operations/sop/ObjectsLayout"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import { SopType } from "../../poly/registers/nodes/types/Sop"; const DEFAULT = ObjectsLayoutSopOperation.DEFAULT_PARAMS; class ObjectsLayoutSopParamConfig extends NodeParamsConfig { constructor() { super(...arguments); /** @param layout width */ this.maxLayoutWidth = ParamConfig.FLOAT(DEFAULT.maxLayoutWidth, { range: [0, 10] }); /** @param row height */ this.rowHeight = ParamConfig.FLOAT(DEFAULT.rowHeight, { range: [0, 10] }); /** @param padding between objects */ this.padding = ParamConfig.VECTOR2(DEFAULT.padding.toArray()); /** @param addAttribs */ this.addAttribs = ParamConfig.BOOLEAN(DEFAULT.addAttribs); /** @param add row index attribute */ this.addRowAttrib = ParamConfig.BOOLEAN(DEFAULT.addRowAttrib, { visibleIf: { addAttribs: 1 } }); /** @param add rowWidthInner attribute */ this.addRowWidthInner = ParamConfig.BOOLEAN(DEFAULT.addRowWidthInner, { visibleIf: { addAttribs: 1 } }); /** @param add rowWidthOuter attribute */ this.addRowWidthOuter = ParamConfig.BOOLEAN(DEFAULT.addRowWidthOuter, { visibleIf: { addAttribs: 1 } }); } } const ParamsConfig = new ObjectsLayoutSopParamConfig(); export class ObjectsLayoutSopNode extends TypedSopNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return SopType.OBJECTS_LAYOUT; } initializeNode() { this.io.inputs.setCount(1); this.io.inputs.initInputsClonedState(ObjectsLayoutSopOperation.INPUT_CLONED_STATE); } cook(inputCoreGroups) { this._operation = this._operation || new ObjectsLayoutSopOperation(this.scene(), this.states, this); const coreGroup = this._operation.cook(inputCoreGroups, this.pv); this.setCoreGroup(coreGroup); } }