UNPKG

@polygonjs/polygonjs

Version:

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

61 lines (60 loc) 2.53 kB
"use strict"; import { BaseTriggerAndObjectJsNode } from "./_BaseTriggerAndObject"; import { inputObject3D } from "./_BaseObject3D"; import { Poly } from "../../Poly"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import { JsConnectionPoint, JsConnectionPointType } from "../utils/io/connections/Js"; import { RefJsDefinition } from "./utils/JsDefinition"; var CreateSoftBodyConstraintOutput = /* @__PURE__ */ ((CreateSoftBodyConstraintOutput2) => { CreateSoftBodyConstraintOutput2["ID"] = "id"; return CreateSoftBodyConstraintOutput2; })(CreateSoftBodyConstraintOutput || {}); class CreateSoftBodyConstraintJsParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); this.index = ParamConfig.INTEGER(0, { range: [-1, 100], rangeLocked: [true, false] }); } } const ParamsConfig = new CreateSoftBodyConstraintJsParamsConfig(); export class CreateSoftBodyConstraintJsNode extends BaseTriggerAndObjectJsNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return "createSoftBodyConstraint"; } initializeNode() { super.initializeNode(); this.io.outputs.setNamedOutputConnectionPoints([ new JsConnectionPoint(JsConnectionPointType.TRIGGER, JsConnectionPointType.TRIGGER), new JsConnectionPoint(JsConnectionPointType.OBJECT_3D, JsConnectionPointType.OBJECT_3D), new JsConnectionPoint("id" /* ID */, JsConnectionPointType.INT) ]); } setTriggerableLines(linesController) { const object3D = inputObject3D(this, linesController); const index = this.variableForInputParam(linesController, this.p.index); const outConstraintId = this._addConstraintIdRef(linesController); const func = Poly.namedFunctionsRegister.getFunction("softBodyConstraintCreate", this, linesController); const bodyLine = func.asString(object3D, index, `this.${outConstraintId}`); linesController.addTriggerableLines(this, [bodyLine]); } setLines(linesController) { super.setLines(linesController); const usedOutputNames = this.io.outputs.used_output_names(); if (usedOutputNames.includes("id" /* ID */)) { this._addConstraintIdRef(linesController); } } _addConstraintIdRef(linesController) { const outConstraintId = this.jsVarName("id" /* ID */); linesController.addDefinitions(this, [ new RefJsDefinition(this, linesController, JsConnectionPointType.INT, outConstraintId, `-1`) ]); return outConstraintId; } }