polygonjs-engine
Version:
node-based webgl 3D engine https://polygonjs.com
51 lines (45 loc) • 1.81 kB
text/typescript
import {ShaderName} from '../../../utils/shaders/ShaderName';
import {BaseGLDefinition} from '../../utils/GLDefinition';
import {BaseGlNodeType} from '../../_Base';
import {MapUtils} from '../../../../../core/MapUtils';
import {CoreGraphNodeId} from '../../../../../core/graph/CoreGraph';
export class LinesController {
private _definitions_by_node_id: Map<CoreGraphNodeId, BaseGLDefinition[]> = new Map();
private _body_lines_by_node_id: Map<CoreGraphNodeId, string[]> = new Map();
constructor(private _shader_name: ShaderName) {}
get shader_name() {
return this._shader_name;
}
add_definitions(node: BaseGlNodeType, definitions: BaseGLDefinition[]) {
for (let definition of definitions) {
MapUtils.push_on_array_at_entry(this._definitions_by_node_id, node.graphNodeId(), definition);
}
}
definitions(node: BaseGlNodeType): BaseGLDefinition[] | undefined {
return this._definitions_by_node_id.get(node.graphNodeId());
}
// all_definition_nodes(scene: PolyScene) {
// const nodes: BaseGlNodeType[] = [];
// this._definitions_by_node_id.forEach((lines, node_id) => {
// const node = scene.graph.node_from_id(node_id) as BaseGlNodeType;
// nodes.push(node);
// });
// return nodes;
// }
add_body_lines(node: BaseGlNodeType, lines: string[]) {
for (let line of lines) {
MapUtils.push_on_array_at_entry(this._body_lines_by_node_id, node.graphNodeId(), line);
}
}
body_lines(node: BaseGlNodeType): string[] | undefined {
return this._body_lines_by_node_id.get(node.graphNodeId());
}
// all_body_line_nodes(scene: PolyScene) {
// const nodes: BaseGlNodeType[] = [];
// this._body_lines_by_node_id.forEach((lines, node_id) => {
// const node = scene.graph.node_from_id(node_id) as BaseGlNodeType;
// nodes.push(node);
// });
// return nodes;
// }
}