@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
46 lines (45 loc) • 1.82 kB
JavaScript
;
import { JsType } from "./../../../../poly/registers/nodes/types/Js";
import { NodeContext } from "./../../../../poly/NodeContext";
export class JsNodeFinder {
static findOutputNodes(node) {
const output = node.nodesByType(JsType.OUTPUT);
const outputAmbientLight = node.nodesByType(JsType.OUTPUT_AMBIENT_LIGHT);
const outputAreaLight = node.nodesByType(JsType.OUTPUT_AREA_LIGHT);
const outputDirectionalLight = node.nodesByType(JsType.OUTPUT_DIRECTIONAL_LIGHT);
const outputHemisphereLight = node.nodesByType(JsType.OUTPUT_HEMISPHERE_LIGHT);
const outputPointLight = node.nodesByType(JsType.OUTPUT_POINT_LIGHT);
const outputSpotLight = node.nodesByType(JsType.OUTPUT_SPOT_LIGHT);
return output.concat(outputAmbientLight).concat(outputAreaLight).concat(outputDirectionalLight).concat(outputHemisphereLight).concat(outputPointLight).concat(outputSpotLight);
}
static findParamGeneratingNodes(node) {
var _a;
const list = [];
(_a = node.childrenController) == null ? void 0 : _a.traverseChildren(
(child) => {
const childJsNode = child;
if (childJsNode.paramsGenerating()) {
list.push(childJsNode);
}
},
(child) => {
if (!child.childrenController) {
return child.context() == NodeContext.GL;
} else {
return child.context() == NodeContext.GL && child.childrenController.context == NodeContext.GL;
}
}
);
return list;
}
// static findVaryingNodes(node: BaseJsParentNode) {
// const nodes = node.nodesByType(JsType.VARYING_WRITE);
// return nodes;
// }
static findAttributeExportNodes(node) {
const nodes = node.nodesByType(JsType.ATTRIBUTE);
return nodes.filter((node2) => {
return node2.isExporting();
});
}
}