@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
129 lines (128 loc) • 3.76 kB
JavaScript
"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);
}
}
});
}