Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/flo-bit/shapecraft. flo-bit.dev/shapecraft
Something went wrong. Try again.
1.3 kB · 88 lines
JavaScript
at commit da69385e
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889import Node from '../core/Node.js';import { nodeProxy } from '../tsl/TSLBase.js';
class CodeNode extends Node {
static get type() {
return 'CodeNode';
}
constructor( code = '', includes = [], language = '' ) {
super( 'code' );
this.isCodeNode = true;
this.code = code; this.language = language;
this.includes = includes;
}
isGlobal() {
return true;
}
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 = /*@__PURE__*/ 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' );