12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import Node, { addNodeClass } from './Node.js';
- import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
- class ContextNode extends Node {
- constructor( node, context = {} ) {
- super();
- this.isContextNode = true;
- this.node = node;
- this.context = context;
- }
- getNodeType( builder ) {
- return this.node.getNodeType( builder );
- }
- analyze( builder ) {
- this.node.build( builder );
- }
- setup( builder ) {
- const previousContext = builder.getContext();
- builder.setContext( { ...builder.context, ...this.context } );
- const node = this.node.build( builder );
- builder.setContext( previousContext );
- return node;
- }
- generate( builder, output ) {
- const previousContext = builder.getContext();
- builder.setContext( { ...builder.context, ...this.context } );
- const snippet = this.node.build( builder, output );
- builder.setContext( previousContext );
- return snippet;
- }
- }
- export default ContextNode;
- export const context = nodeProxy( ContextNode );
- export const label = ( node, name ) => context( node, { label: name } );
- addNodeElement( 'context', context );
- addNodeElement( 'label', label );
- addNodeClass( 'ContextNode', ContextNode );
|