@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
29 lines (28 loc) • 1.05 kB
JavaScript
;
import { TypedJsNode } from "./_Base";
import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig";
import { Vector3 } from "three";
import { CoreString } from "../../../core/String";
const POSITION_NAME = "position";
const VARS = {
position: POSITION_NAME
};
class BaseSDFJsParamsConfig extends NodeParamsConfig {
constructor() {
super(...arguments);
this.position = ParamConfig.VECTOR3([0, 0, 0]);
}
}
export function defaultPosition(linesController, node) {
const sanitizedNodePath = CoreString.sanitizeName(node.path());
const varName = `${sanitizedNodePath}_${POSITION_NAME}`;
linesController.addVariable(node, new Vector3(), varName);
return `${varName}.copy(${VARS.position})`;
}
export class BaseSDFJsNode extends TypedJsNode {
position(linesController) {
const inputPosition = this.io.inputs.named_input(POSITION_NAME);
const position = inputPosition ? this.variableForInputParam(linesController, this.p.position) : defaultPosition(linesController, this);
return position;
}
}