@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
58 lines (57 loc) • 2.03 kB
JavaScript
"use strict";
import { TypedSopNode } from "./_Base";
import { MetaballSopOperation } from "../../operations/sop/Metaball";
import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig";
const DEFAULT = MetaballSopOperation.DEFAULT_PARAMS;
class MetaballSopParamsConfig extends NodeParamsConfig {
constructor() {
super(...arguments);
/** @param resolution */
this.resolution = ParamConfig.FLOAT(DEFAULT.resolution, {
range: [0, 100],
rangeLocked: [true, false]
});
/** @param isolation */
this.isolation = ParamConfig.FLOAT(DEFAULT.isolation, {
range: [0, 100],
rangeLocked: [true, false]
});
/** @param useMetaStrengthAttrib */
this.useMetaStrengthAttrib = ParamConfig.BOOLEAN(DEFAULT.useMetaStrengthAttrib);
/** @param metaStrength */
this.metaStrength = ParamConfig.FLOAT(DEFAULT.metaStrength, {
range: [0, 1],
rangeLocked: [true, false]
});
/** @param useMetaSubtractAttrib */
this.useMetaSubtractAttrib = ParamConfig.BOOLEAN(DEFAULT.useMetaSubtractAttrib);
/** @param metaStrength */
this.metaSubtract = ParamConfig.FLOAT(DEFAULT.metaSubtract, {
range: [0, 10],
rangeLocked: [true, false]
});
/** @param enableUVs */
this.enableUVs = ParamConfig.BOOLEAN(DEFAULT.enableUVs);
/** @param enableColors */
this.enableColors = ParamConfig.BOOLEAN(DEFAULT.enableColors);
}
}
const ParamsConfig = new MetaballSopParamsConfig();
export class MetaballSopNode extends TypedSopNode {
constructor() {
super(...arguments);
this.paramsConfig = ParamsConfig;
}
static type() {
return "metaball";
}
initializeNode() {
this.io.inputs.setCount(1);
this.io.inputs.initInputsClonedState(MetaballSopOperation.INPUT_CLONED_STATE);
}
cook(input_contents) {
this._operation = this._operation || new MetaballSopOperation(this._scene, this.states, this);
const core_group = this._operation.cook(input_contents, this.pv);
this.setCoreGroup(core_group);
}
}