Skip to content

⬅️ Back to Table of Contents

📄 PropertyNode.js

📊 Analysis Summary

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

📚 Table of Contents

🛠️ File Location:

📂 src/nodes/core/PropertyNode.js

📦 Imports

Name Source
Node ./Node.js
nodeImmutable ../tsl/TSLCore.js
nodeObject ../tsl/TSLCore.js

Variables & Constants

Name Type Kind Value Exported
nodeVar any let/var *not shown*

Functions

PropertyNode.getHash(builder: any): string

Parameters:

  • builder any

Returns: string

Calls:

  • super.getHash
Code
getHash( builder ) {

        return this.name || super.getHash( builder );

    }

PropertyNode.generate(builder: any): any

Parameters:

  • builder any

Returns: any

Calls:

  • builder.getVaryingFromNode
  • builder.getVarFromNode
  • builder.getPropertyName
Code
generate( builder ) {

        let nodeVar;

        if ( this.varying === true ) {

            nodeVar = builder.getVaryingFromNode( this, this.name );
            nodeVar.needsInterpolation = true;

        } else {

            nodeVar = builder.getVarFromNode( this, this.name );

        }

        return builder.getPropertyName( nodeVar );

    }

property(type: string, name: string): PropertyNode

Parameters:

  • type string
  • name string

Returns: PropertyNode

Calls:

  • nodeObject (from ../tsl/TSLCore.js)
Code
( type, name ) => nodeObject( new PropertyNode( type, name ) )

varyingProperty(type: string, name: string): PropertyNode

Parameters:

  • type string
  • name string

Returns: PropertyNode

Calls:

  • nodeObject (from ../tsl/TSLCore.js)
Code
( type, name ) => nodeObject( new PropertyNode( type, name, true ) )

Classes

PropertyNode

Class Code
class PropertyNode extends Node {

    static get type() {

        return 'PropertyNode';

    }

    /**
     * Constructs a new property node.
     *
     * @param {string} nodeType - The type of the node.
     * @param {?string} [name=null] - The name of the property in the shader.
     * @param {boolean} [varying=false] - Whether this property is a varying or not.
     */
    constructor( nodeType, name = null, varying = false ) {

        super( nodeType );

        /**
         * The name of the property in the shader. If no name is defined,
         * the node system auto-generates one.
         *
         * @type {?string}
         * @default null
         */
        this.name = name;

        /**
         * Whether this property is a varying or not.
         *
         * @type {boolean}
         * @default false
         */
        this.varying = varying;

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

        /**
         * This flag is used for global cache.
         *
         * @type {boolean}
         * @default true
         */
        this.global = true;

    }

    getHash( builder ) {

        return this.name || super.getHash( builder );

    }

    generate( builder ) {

        let nodeVar;

        if ( this.varying === true ) {

            nodeVar = builder.getVaryingFromNode( this, this.name );
            nodeVar.needsInterpolation = true;

        } else {

            nodeVar = builder.getVarFromNode( this, this.name );

        }

        return builder.getPropertyName( nodeVar );

    }

}

Methods

getHash(builder: any): string
Code
getHash( builder ) {

        return this.name || super.getHash( builder );

    }
generate(builder: any): any
Code
generate( builder ) {

        let nodeVar;

        if ( this.varying === true ) {

            nodeVar = builder.getVaryingFromNode( this, this.name );
            nodeVar.needsInterpolation = true;

        } else {

            nodeVar = builder.getVarFromNode( this, this.name );

        }

        return builder.getPropertyName( nodeVar );

    }