@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
47 lines (46 loc) • 2.43 kB
TypeScript
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 {};