UNPKG

@polygonjs/polygonjs

Version:

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

43 lines (42 loc) 1.87 kB
"use strict"; import { TypedSopNode } from "./_Base"; import { TorusKnotSopOperation } from "../../operations/sop/TorusKnot"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import { SopType } from "../../poly/registers/nodes/types/Sop"; const DEFAULT = TorusKnotSopOperation.DEFAULT_PARAMS; class TorusKnotSopParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); /** @param large radius */ this.radius = ParamConfig.FLOAT(DEFAULT.radius); /** @param radius of the tube */ this.radiusTube = ParamConfig.FLOAT(DEFAULT.radiusTube); /** @param number of segments along the length of the torus */ this.segmentsRadial = ParamConfig.INTEGER(DEFAULT.segmentsRadial, { range: [1, 128] }); /** @param number of segments along the tube */ this.segmentsTube = ParamConfig.INTEGER(DEFAULT.segmentsTube, { range: [1, 32] }); /** @param change this to create more interesting shapes. Don't ask me what it is exactly, I don't know! */ this.p = ParamConfig.INTEGER(DEFAULT.p, { range: [1, 10] }); /** @param change this to create more interesting shapes. Don't ask me what it is exactly, I don't know! */ this.q = ParamConfig.INTEGER(DEFAULT.q, { range: [1, 10] }); /** @param center of the torus knot */ this.center = ParamConfig.VECTOR3(DEFAULT.center); } } const ParamsConfig = new TorusKnotSopParamsConfig(); export class TorusKnotSopNode extends TypedSopNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return SopType.TORUS_KNOT; } initializeNode() { } cook(input_contents) { this._operation = this._operation || new TorusKnotSopOperation(this.scene(), this.states, this); const core_group = this._operation.cook(input_contents, this.pv); this.setCoreGroup(core_group); } }