UNPKG

@polygonjs/polygonjs

Version:

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

66 lines (65 loc) 3.46 kB
"use strict"; import { ParamlessTypedJsNode } from "./_Base"; import { JsConnectionPoint, JsConnectionPointType, JS_CONNECTION_POINT_IN_NODE_DEF } from "../utils/io/connections/Js"; import { GetObjectPropertyJsNodeInputName, OBJECT_VECTOR3_PROPERTIES, OBJECT_BOOLEAN_PROPERTIES } from "../../../core/reactivity/ObjectPropertyReactivity"; import { Poly } from "../../Poly"; import { inputObject3D } from "./_BaseObject3D"; import { JsType } from "../../poly/registers/nodes/types/Js"; const CONNECTION_OPTIONS = JS_CONNECTION_POINT_IN_NODE_DEF; export class GetObjectPropertyJsNode extends ParamlessTypedJsNode { static type() { return JsType.GET_OBJECT_PROPERTY; } initializeNode() { this.io.inputs.setNamedInputConnectionPoints([ new JsConnectionPoint(JsConnectionPointType.OBJECT_3D, JsConnectionPointType.OBJECT_3D, CONNECTION_OPTIONS) ]); this.io.outputs.setNamedOutputConnectionPoints([ new JsConnectionPoint(GetObjectPropertyJsNodeInputName.position, JsConnectionPointType.VECTOR3), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.rotation, JsConnectionPointType.EULER), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.quaternion, JsConnectionPointType.QUATERNION), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.scale, JsConnectionPointType.VECTOR3), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.matrix, JsConnectionPointType.MATRIX4), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.up, JsConnectionPointType.VECTOR3), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.visible, JsConnectionPointType.BOOLEAN), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.matrixAutoUpdate, JsConnectionPointType.BOOLEAN), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.castShadow, JsConnectionPointType.BOOLEAN), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.receiveShadow, JsConnectionPointType.BOOLEAN), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.frustumCulled, JsConnectionPointType.BOOLEAN), // new ActorConnectionPoint(GetObjectPropertyActorNodeInputName.id, ActorConnectionPointType.INTEGER), // new ActorConnectionPoint(GetObjectPropertyActorNodeInputName.uuid, ActorConnectionPointType.BOOLEAN), new JsConnectionPoint(GetObjectPropertyJsNodeInputName.material, JsConnectionPointType.MATERIAL) ]); } setLines(linesController) { const usedOutputNames = this.io.outputs.used_output_names(); const object3D = inputObject3D(this, linesController); const _f = (propertyName, type) => { if (!usedOutputNames.includes(propertyName)) { return; } const func = Poly.namedFunctionsRegister.getFunction("getObjectProperty", this, linesController); linesController.addBodyOrComputed(this, [ { dataType: type, varName: this.jsVarName(propertyName), value: func.asString(object3D, `'${propertyName}'`) } ]); }; OBJECT_VECTOR3_PROPERTIES.forEach((propertyName) => { _f(propertyName, JsConnectionPointType.VECTOR3); }); OBJECT_BOOLEAN_PROPERTIES.forEach((propertyName) => { _f(propertyName, JsConnectionPointType.BOOLEAN); }); _f("rotation", JsConnectionPointType.EULER); _f("quaternion", JsConnectionPointType.QUATERNION); _f("matrix", JsConnectionPointType.MATRIX4); _f("material", JsConnectionPointType.MATERIAL); } }