UNPKG

@polygonjs/polygonjs

Version:

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

49 lines (43 loc) 1.54 kB
import {ParamConfig} from '../../../../../engine/nodes/utils/params/ParamsConfig'; import {BaseNodeType} from '../../../../../engine/nodes/_Base'; import {Constructor} from '../../../../../types/GlobalTypes'; const DEFAULT = { facetAngle: 45, }; export function SOPSDFTesselationParamConfig<TBase extends Constructor>(Base: TBase) { return class Mixin extends Base { /** @param linear Tolerance */ facetAngle = ParamConfig.FLOAT(DEFAULT.facetAngle, { range: [0, 180], rangeLocked: [true, false], }); /** @param meshes color */ meshesColor = ParamConfig.COLOR([1, 1, 1]); /** @param wireframe */ wireframe = ParamConfig.BOOLEAN(false); }; } export function OBJSDFTesselationParamConfig<TBase extends Constructor>(Base: TBase) { return class Mixin extends Base { /** @param linear Tolerance */ SDFFacetAngle = ParamConfig.FLOAT(DEFAULT.facetAngle, { range: [0, 180], rangeLocked: [true, false], }); /** @param meshes color */ SDFMeshesColor = ParamConfig.COLOR([1, 1, 1]); /** @param wireframe */ SDFWireframe = ParamConfig.BOOLEAN(false); }; } export const TESSELATION_PARAM_NAMES = new Set<string>(['SDFFacetAngle', 'SDFMeshesColor', 'SDFWireframe']); export function addSDFTesselationParamsCallback(node: BaseNodeType, callback: () => void) { node.params.onParamsCreated('SDFtesselationParamsHooks', () => { const params = node.params.all; for (const param of params) { if (TESSELATION_PARAM_NAMES.has(param.name())) { param.options.setOption('callback', callback); } } }); }