UNPKG

@polygonjs/polygonjs

Version:

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

29 lines (28 loc) 1.05 kB
"use strict"; 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; } }