UNPKG

@polygonjs/polygonjs

Version:

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

70 lines (69 loc) 2.37 kB
"use strict"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import { UniformsTransparencyParamConfig, UniformsTransparencyController } from "./utils/UniformsTransparencyController"; import { AdvancedCommonController, AdvancedCommonParamConfig } from "./utils/AdvancedCommonController"; import { TypedBuilderMatNode, BaseBuilderParamConfig } from "./_BaseBuilder"; import { AssemblerName } from "../../poly/registers/assemblers/_BaseRegister"; import { Poly } from "../../Poly"; import { DefaultFolderParamConfig } from "./utils/DefaultFolder"; import { AdvancedFolderParamConfig } from "./utils/AdvancedFolder"; import { MatType } from "../../poly/registers/nodes/types/Mat"; import { CustomMaterialLineParamConfig, materialLineAssemblerCustomMaterialRequested } from "./utils/customMaterials/CustomMaterialLine"; class LineBasicBuilderMatParamsConfig extends CustomMaterialLineParamConfig( AdvancedCommonParamConfig( BaseBuilderParamConfig( /* advanced */ AdvancedFolderParamConfig( UniformsTransparencyParamConfig(DefaultFolderParamConfig(NodeParamsConfig)) ) ) ) ) { constructor() { super(...arguments); this.linewidth = ParamConfig.FLOAT(1, { range: [0, 10], rangeLocked: [true, false] }); } } const ParamsConfig = new LineBasicBuilderMatParamsConfig(); export class LineBasicBuilderMatNode extends TypedBuilderMatNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; this.controllers = { advancedCommon: new AdvancedCommonController(this), uniformTransparency: new UniformsTransparencyController(this) }; this.controllersList = Object.values(this.controllers); } static type() { return MatType.LINE_BASIC_BUILDER; } usedAssembler() { return AssemblerName.GL_LINE; } _createAssemblerController() { return Poly.assemblersRegister.assembler(this, this.usedAssembler()); } customMaterialRequested(customName) { return materialLineAssemblerCustomMaterialRequested(this, customName); } async cook() { this._material = this._material || this.createMaterial(); await Promise.all(this.controllersPromises(this._material)); this.compileIfRequired(this._material); this._material.linewidth = this.pv.linewidth; this.setMaterial(this._material); } }