123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- import Node, { addNodeClass } from '../core/Node.js';
- import { nodeProxy } from '../shadernode/ShaderNode.js';
- class CodeNode extends Node {
- constructor( code = '', includes = [], language = '' ) {
- super( 'code' );
- this.isCodeNode = true;
- this.code = code;
- this.language = language;
- this.includes = includes;
- }
- setIncludes( includes ) {
- this.includes = includes;
- return this;
- }
- getIncludes( /*builder*/ ) {
- return this.includes;
- }
- generate( builder ) {
- const includes = this.getIncludes( builder );
- for ( const include of includes ) {
- include.build( builder );
- }
- const nodeCode = builder.getCodeFromNode( this, this.getNodeType( builder ) );
- nodeCode.code = this.code;
- return nodeCode.code;
- }
- serialize( data ) {
- super.serialize( data );
- data.code = this.code;
- data.language = this.language;
- }
- deserialize( data ) {
- super.deserialize( data );
- this.code = data.code;
- this.language = data.language;
- }
- }
- export default CodeNode;
- export const code = nodeProxy( CodeNode );
- export const js = ( src, includes ) => code( src, includes, 'js' );
- export const wgsl = ( src, includes ) => code( src, includes, 'wgsl' );
- export const glsl = ( src, includes ) => code( src, includes, 'glsl' );
- addNodeClass( 'CodeNode', CodeNode );
|