| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import TempNode from '../core/TempNode.js';
- import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
- import { log } from '../../utils.js';
- class DebugNode extends TempNode {
- static get type() {
- return 'DebugNode';
- }
- constructor( node, callback = null ) {
- super();
- this.node = node;
- this.callback = callback;
- }
- getNodeType( builder ) {
- return this.node.getNodeType( builder );
- }
- setup( builder ) {
- return this.node.build( builder );
- }
- analyze( builder ) {
- return this.node.build( builder );
- }
- generate( builder ) {
- const callback = this.callback;
- const snippet = this.node.build( builder );
- if ( callback !== null ) {
- callback( builder, snippet );
- } else {
- const title = '--- TSL debug - ' + builder.shaderStage + ' shader ---';
- const border = '-'.repeat( title.length );
- let code = '';
- code += '// #' + title + '#\n';
- code += builder.flow.code.replace( /^\t/mg, '' ) + '\n';
- code += '/* ... */ ' + snippet + ' /* ... */\n';
- code += '// #' + border + '#\n';
- log( code );
- }
- return snippet;
- }
- }
- export default DebugNode;
- /**
- * TSL function for creating a debug node.
- *
- * @tsl
- * @function
- * @param {Node} node - The node to debug.
- * @param {?Function} [callback=null] - Optional callback function to handle the debug output.
- * @returns {DebugNode}
- */
- export const debug = ( node, callback = null ) => nodeObject( new DebugNode( nodeObject( node ), callback ) ).toStack();
- addMethodChaining( 'debug', debug );
|