Skip to content

⬅️ Back to Table of Contents

📄 ArrayNode.js

📊 Analysis Summary

Metric Count
🔧 Functions 5
🧱 Classes 1
📦 Imports 3
📊 Variables & Constants 4

📚 Table of Contents

🛠️ File Location:

📂 src/nodes/core/ArrayNode.js

📦 Imports

Name Source
TempNode ./TempNode.js
addMethodChaining ../tsl/TSLCore.js
nodeObject ../tsl/TSLCore.js

Variables & Constants

Name Type Kind Value Exported
node any let/var *not shown*
values any let/var params[ 0 ]
nodeType any let/var params[ 0 ]
count any let/var params[ 1 ]

Functions

ArrayNode.getArrayCount(): number

JSDoc:

/**
     * Returns the number of elements in the node array.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {number} The number of elements in the node array.
     */

Returns: number

Code
getArrayCount( /*builder*/ ) {

        return this.count;

    }

ArrayNode.getNodeType(builder: NodeBuilder): string

JSDoc:

/**
     * Returns the node's type.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The type of the node.
     */

Parameters:

  • builder NodeBuilder

Returns: string

Calls:

  • this.values[ 0 ].getNodeType
Code
getNodeType( builder ) {

        if ( this.nodeType === null ) {

            this.nodeType = this.values[ 0 ].getNodeType( builder );

        }

        return this.nodeType;

    }

ArrayNode.getElementType(builder: NodeBuilder): string

JSDoc:

/**
     * Returns the node's type.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The type of the node.
     */

Parameters:

  • builder NodeBuilder

Returns: string

Calls:

  • this.getNodeType
Code
getElementType( builder ) {

        return this.getNodeType( builder );

    }

ArrayNode.generate(builder: NodeBuilder): string

JSDoc:

/**
     * This method builds the output node and returns the resulting array as a shader string.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The generated shader string.
     */

Parameters:

  • builder NodeBuilder

Returns: string

Calls:

  • this.getNodeType
  • builder.generateArray
Code
generate( builder ) {

        const type = this.getNodeType( builder );

        return builder.generateArray( type, this.count, this.values );

    }

array(params: any[]): ArrayNode

Parameters:

  • params any[]

Returns: ArrayNode

Calls:

  • nodeObject (from ../tsl/TSLCore.js)
Code
( ...params ) => {

    let node;

    if ( params.length === 1 ) {

        const values = params[ 0 ];

        node = new ArrayNode( null, values.length, values );

    } else {

        const nodeType = params[ 0 ];
        const count = params[ 1 ];

        node = new ArrayNode( nodeType, count );

    }

    return nodeObject( node );

}

Classes

ArrayNode

Class Code
class ArrayNode extends TempNode {

    static get type() {

        return 'ArrayNode';

    }

    /**
     * Constructs a new array node.
     *
     * @param {?string} nodeType - The data type of the elements.
     * @param {number} count - Size of the array.
     * @param {?Array<Node>} [values=null] - Array default values.
     */
    constructor( nodeType, count, values = null ) {

        super( nodeType );

        /**
         * Array size.
         *
         * @type {number}
         */
        this.count = count;

        /**
         * Array default values.
         *
         * @type {?Array<Node>}
         */
        this.values = values;

        /**
         * This flag can be used for type testing.
         *
         * @type {boolean}
         * @readonly
         * @default true
         */
        this.isArrayNode = true;

    }

    /**
     * Returns the number of elements in the node array.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {number} The number of elements in the node array.
     */
    getArrayCount( /*builder*/ ) {

        return this.count;

    }

    /**
     * Returns the node's type.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The type of the node.
     */
    getNodeType( builder ) {

        if ( this.nodeType === null ) {

            this.nodeType = this.values[ 0 ].getNodeType( builder );

        }

        return this.nodeType;

    }

    /**
     * Returns the node's type.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The type of the node.
     */
    getElementType( builder ) {

        return this.getNodeType( builder );

    }

    /**
     * This method builds the output node and returns the resulting array as a shader string.
     *
     * @param {NodeBuilder} builder - The current node builder.
     * @return {string} The generated shader string.
     */
    generate( builder ) {

        const type = this.getNodeType( builder );

        return builder.generateArray( type, this.count, this.values );

    }

}

Methods

getArrayCount(): number
Code
getArrayCount( /*builder*/ ) {

        return this.count;

    }
getNodeType(builder: NodeBuilder): string
Code
getNodeType( builder ) {

        if ( this.nodeType === null ) {

            this.nodeType = this.values[ 0 ].getNodeType( builder );

        }

        return this.nodeType;

    }
getElementType(builder: NodeBuilder): string
Code
getElementType( builder ) {

        return this.getNodeType( builder );

    }
generate(builder: NodeBuilder): string
Code
generate( builder ) {

        const type = this.getNodeType( builder );

        return builder.generateArray( type, this.count, this.values );

    }