UNPKG

@polygonjs/polygonjs

Version:

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

59 lines (58 loc) 1.83 kB
"use strict"; import { ParamConfig } from "../../../../../engine/nodes/utils/params/ParamsConfig"; const DEFAULT = { facetAngle: 45, linesColor: [0.4, 0.1, 0.6] }; export function SOPCSGTesselationParamConfig(Base) { return class Mixin extends Base { constructor() { super(...arguments); /** @param linear Tolerance */ this.facetAngle = ParamConfig.FLOAT(DEFAULT.facetAngle, { range: [0, 180], rangeLocked: [true, false] }); /** @param edges color */ this.linesColor = ParamConfig.COLOR(DEFAULT.linesColor); /** @param meshes color */ this.meshesColor = ParamConfig.COLOR([1, 1, 1]); /** @param wireframe */ this.wireframe = ParamConfig.BOOLEAN(false); } }; } export function OBJCSGTesselationParamConfig(Base) { return class Mixin extends Base { constructor() { super(...arguments); /** @param linear Tolerance */ this.CSGFacetAngle = ParamConfig.FLOAT(DEFAULT.facetAngle, { range: [0, 180], rangeLocked: [true, false] }); /** @param edges color */ this.CSGLinesColor = ParamConfig.COLOR(DEFAULT.linesColor); /** @param meshes color */ this.CSGMeshesColor = ParamConfig.COLOR([1, 1, 1]); /** @param wireframe */ this.CSGWireframe = ParamConfig.BOOLEAN(false); } }; } export const TESSELATION_PARAM_NAMES = /* @__PURE__ */ new Set([ "CSGFacetAngle", "CSGLinesColor", "CSGMeshesColor", "CSGWireframe" ]); export function addCSGTesselationParamsCallback(node, callback) { node.params.onParamsCreated("CSGtesselationParamsHooks", () => { const params = node.params.all; for (const param of params) { if (TESSELATION_PARAM_NAMES.has(param.name())) { param.options.setOption("callback", callback); } } }); }