MCP 3D Printer Server

by DMontgomery40
Verified
import ReferenceNode from './ReferenceNode.js'; import { nodeObject } from '../tsl/TSLBase.js'; /** @module MaterialReferenceNode **/ /** * This node is a special type of reference node which is intended * for linking material properties with node values. * ```js * const opacityNode = materialReference( 'opacity', 'float', material ); * ``` * When changing `material.opacity`, the node value of `opacityNode` will * automatically be updated. * * @augments module:ReferenceNode~ReferenceNode */ class MaterialReferenceNode extends ReferenceNode { static get type() { return 'MaterialReferenceNode'; } /** * Constructs a new material reference node. * * @param {String} property - The name of the property the node refers to. * @param {String} inputType - The uniform type that should be used to represent the property value. * @param {Material?} [material=null] - The material the property belongs to. When no material is set, * the node refers to the material of the current rendered object. */ constructor( property, inputType, material = null ) { super( property, inputType, material ); /** * The material the property belongs to. When no material is set, * the node refers to the material of the current rendered object. * * @type {Material?} * @default null */ this.material = material; /** * This flag can be used for type testing. * * @type {Boolean} * @readonly * @default true */ this.isMaterialReferenceNode = true; } /** * Updates the reference based on the given state. The state is only evaluated * {@link module:MaterialReferenceNode~MaterialReferenceNode#material} is not set. * * @param {(NodeFrame|NodeBuilder)} state - The current state. * @return {Object} The updated reference. */ updateReference( state ) { this.reference = this.material !== null ? this.material : state.material; return this.reference; } } export default MaterialReferenceNode; /** * TSL function for creating a material reference node. * * @function * @param {String} name - The name of the property the node refers to. * @param {String} type - The uniform type that should be used to represent the property value. * @param {Material?} [material=null] - The material the property belongs to. * When no material is set, the node refers to the material of the current rendered object. * @returns {MaterialReferenceNode} */ export const materialReference = ( name, type, material = null ) => nodeObject( new MaterialReferenceNode( name, type, material ) );