UNPKG

@polygonjs/polygonjs

Version:

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

129 lines (128 loc) 3.76 kB
"use strict"; import { ParamConfig } from "../../../../../engine/nodes/utils/params/ParamsConfig"; const DEFAULT = { edgesColor: [0.1, 0.7, 0.2] }; export function SOPCADTesselationParamConfig(Base) { return class Mixin extends Base { constructor() { super(...arguments); /** @param linear Tolerance */ this.linearTolerance = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param angular Tolerance */ this.angularTolerance = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param curve Abscissa */ this.curveAbscissa = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param curve Tolerance */ this.curveTolerance = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param display edges */ this.displayEdges = ParamConfig.BOOLEAN(true, { separatorBefore: true }); /** @param edges color */ this.edgesColor = ParamConfig.COLOR(DEFAULT.edgesColor, { visibleIf: { displayEdges: true } }); /** @param display meshes */ this.displayMeshes = ParamConfig.BOOLEAN(true); /** @param meshes color */ this.meshesColor = ParamConfig.COLOR([1, 1, 1], { visibleIf: { displayMeshes: true } }); /** @param wireframe */ this.wireframe = ParamConfig.BOOLEAN(false, { visibleIf: { displayMeshes: true } }); } }; } export function OBJCADTesselationParamConfig(Base) { return class Mixin extends Base { constructor() { super(...arguments); /** @param linear Tolerance */ this.CADLinearTolerance = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param angular Tolerance */ this.CADAngularTolerance = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param curve Abscissa */ this.CADCurveAbscissa = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param curve Tolerance */ this.CADCurveTolerance = ParamConfig.FLOAT(0.1, { range: [1e-3, 1], rangeLocked: [true, false] }); /** @param display edges */ this.CADDisplayEdges = ParamConfig.BOOLEAN(true, { separatorBefore: true }); /** @param edges color */ this.CADEdgesColor = ParamConfig.COLOR(DEFAULT.edgesColor, { visibleIf: { CADDisplayEdges: true } }); /** @param display meshes */ this.CADDisplayMeshes = ParamConfig.BOOLEAN(true); /** @param meshes color */ this.CADMeshesColor = ParamConfig.COLOR([1, 1, 1], { visibleIf: { CADDisplayMeshes: true } }); /** @param wireframe */ this.CADWireframe = ParamConfig.BOOLEAN(false, { visibleIf: { CADDisplayMeshes: true } }); } }; } export const TESSELATION_PARAM_NAMES = /* @__PURE__ */ new Set([ "CADLinearTolerance", "CADAngularTolerance", "CADCurveAbscissa", "CADCurveTolerance", "CADDisplayEdges", "CADEdgesColor", "CADDisplayMeshes", "CADMeshesColor", "CADWireframe" ]); export function addCADTesselationParamsCallback(node, callback) { node.params.onParamsCreated("CADtesselationParamsHooks", () => { const params = node.params.all; for (const param of params) { if (TESSELATION_PARAM_NAMES.has(param.name())) { param.options.setOption("callback", callback); } } }); }