UNPKG

@polygonjs/polygonjs

Version:

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

47 lines (46 loc) 2.43 kB
import { BaseJsNodeType } from '../../_Base'; import { TypedNodeTraverser } from '../../../utils/shaders/NodeTraverser'; import { JsFunctionName } from '../../../utils/shaders/ShaderName'; import { JsLinesCollectionController } from './JsLinesCollectionController'; import { LineType } from './LineType'; import { JsParamConfig } from './JsParamConfig'; import { ParamType } from '../../../../poly/ParamType'; import { NodeContext } from '../../../../poly/NodeContext'; import { BaseJsShaderAssembler } from '../assemblers/_Base'; import { ActorBuilderNode } from '../../../../scene/utils/ActorsManager'; type RootNodesForJsFunctionMethod = (shader_name: JsFunctionName, rootNodes: BaseJsNodeType[]) => BaseJsNodeType[]; export interface CodeBuilderSetCodeLinesOptions { otherFragmentShaderCollectionController?: JsLinesCollectionController; actor: { triggeringNodes: Set<BaseJsNodeType>; triggerableNodes: Set<BaseJsNodeType>; functionNode: ActorBuilderNode; }; } export declare class JsCodeBuilder { private _nodeTraverser; private _rootNodesByShaderName; private _assembler; private _param_configs_controller; private _param_configs_set_allowed; private _shadersCollectionController; private _lines; constructor(_nodeTraverser: TypedNodeTraverser<NodeContext.JS>, _rootNodesByShaderName: RootNodesForJsFunctionMethod, _assembler: BaseJsShaderAssembler); nodeTraverser(): TypedNodeTraverser<NodeContext.JS>; shaderNames(): JsFunctionName[]; buildFromNodes(rootNodes: BaseJsNodeType[], paramNodes: BaseJsNodeType[], setCodeLinesOptions?: CodeBuilderSetCodeLinesOptions): void; shadersCollectionController(): JsLinesCollectionController | undefined; disallow_new_param_configs(): void; allow_new_param_configs(): void; private reset; param_configs(): readonly JsParamConfig<ParamType>[]; lines(shader_name: JsFunctionName, line_type: LineType): string[]; all_lines(): Map<JsFunctionName, Map<LineType, string[]>>; setParamConfigs(nodes: BaseJsNodeType[]): void; private _setCodeLines; private _addCodeLines; private addDefinitions; add_code_line_for_nodes_and_line_type(nodes: BaseJsNodeType[], shaderName: JsFunctionName, lineType: LineType): void; add_code_line_for_node_and_line_type(node: BaseJsNodeType, shaderName: JsFunctionName, lineType: LineType, isLast: boolean): void; } export {};