UNPKG

@polygonjs/polygonjs

Version:

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

48 lines (45 loc) 1.49 kB
import {GlType} from './../../../../poly/registers/nodes/types/Gl'; import {NodeContext} from './../../../../poly/NodeContext'; import {BaseGlParentNode} from '../Controller'; import {BaseGlNodeType} from '../../_Base'; export class GlNodeFinder { static findOutputNodes(node: BaseGlParentNode) { const output_nodes = node.nodesByType(GlType.OUTPUT); return output_nodes; } static findParamGeneratingNodes(node: BaseGlParentNode) { const list: BaseGlNodeType[] = []; node.childrenController?.traverseChildren( (child) => { const childGlNode = child as BaseGlNodeType; if (childGlNode.paramsGenerating()) { list.push(childGlNode); } }, (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: BaseGlParentNode) { const nodes = node.nodesByType(GlType.VARYING_WRITE); return nodes; } static findAttributeExportNodes(node: BaseGlParentNode) { const nodes = node.nodesByType(GlType.ATTRIBUTE); return nodes.filter((node) => { // do not use attributes that are used as an input, as export // return (node.used_output_names().length == 0) && return node.isExporting(); }); } static findAjacencyNodes(node: BaseGlParentNode) { const nodes = node.nodesByType(GlType.ADJACENT_POINTS_ATTRIB_SMOOTH); return nodes; } }