@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
84 lines (83 loc) • 3.02 kB
JavaScript
"use strict";
import { ParamConfig } from "../../../../../engine/nodes/utils/params/ParamsConfig";
export const DEFAULT = {
scale: 1,
displayOuterMesh: false,
displayTetMesh: true,
displayLines: false,
displaySharedFaces: false,
displayPoints: false,
displayCenter: false,
displaySphere: false
};
export function SOPTetTesselationParamConfig(Base) {
return class Mixin extends Base {
constructor() {
super(...arguments);
/** @param tet scale */
this.scale = ParamConfig.FLOAT(DEFAULT.scale, {
range: [0, 1],
rangeLocked: [true, true]
});
/** @param display outer mesh */
this.displayOuterMesh = ParamConfig.BOOLEAN(DEFAULT.displayOuterMesh);
/** @param display tet mesh */
this.displayTetMesh = ParamConfig.BOOLEAN(DEFAULT.displayTetMesh);
/** @param display lines */
this.displayLines = ParamConfig.BOOLEAN(DEFAULT.displayLines);
/** @param display shared faces */
this.displaySharedFaces = ParamConfig.BOOLEAN(DEFAULT.displaySharedFaces);
/** @param display points */
this.displayPoints = ParamConfig.BOOLEAN(DEFAULT.displayCenter);
/** @param display center */
this.displayCenter = ParamConfig.BOOLEAN(DEFAULT.displayCenter);
/** @param display sphere */
this.displaySphere = ParamConfig.BOOLEAN(DEFAULT.displaySphere);
}
};
}
export function OBJTetTesselationParamConfig(Base) {
return class Mixin extends Base {
constructor() {
super(...arguments);
/** @param tet scale */
this.TetScale = ParamConfig.FLOAT(DEFAULT.scale, {
range: [0, 1],
rangeLocked: [true, true]
});
/** @param display outer mesh */
this.TetDisplayOuterMesh = ParamConfig.BOOLEAN(DEFAULT.displayOuterMesh);
/** @param display tet mesh */
this.TetDisplayTetMesh = ParamConfig.BOOLEAN(DEFAULT.displayTetMesh);
/** @param display lines */
this.TetDisplayLines = ParamConfig.BOOLEAN(DEFAULT.displayLines);
/** @param display lines */
this.TetDisplaySharedFaces = ParamConfig.BOOLEAN(DEFAULT.displaySharedFaces);
/** @param display points */
this.TetDisplayPoints = ParamConfig.BOOLEAN(DEFAULT.displayPoints);
/** @param display center */
this.TetDisplayCenter = ParamConfig.BOOLEAN(DEFAULT.displayCenter);
/** @param display sphere */
this.TetDisplaySphere = ParamConfig.BOOLEAN(DEFAULT.displaySphere);
}
};
}
export const TESSELATION_PARAM_NAMES = /* @__PURE__ */ new Set([
"TetScale",
"TetDisplayMesh",
"TetDisplayLines",
"TetDisplaySharedFaces",
"TetDisplayPoints",
"TetDisplayCenter",
"TetDisplaySphere"
]);
export function addTetTesselationParamsCallback(node, callback) {
node.params.onParamsCreated("TettesselationParamsHooks", () => {
const params = node.params.all;
for (const param of params) {
if (TESSELATION_PARAM_NAMES.has(param.name())) {
param.options.setOption("callback", callback);
}
}
});
}