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