12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- import Node from '../core/Node.js';
- import FloatNode from '../inputs/FloatNode.js';
- import Vector2Node from '../inputs/Vector2Node.js';
- import Vector3Node from '../inputs/Vector3Node.js';
- import Vector4Node from '../inputs/Vector4Node.js';
- import ColorNode from '../inputs/ColorNode.js';
- import TextureNode from '../inputs/TextureNode.js';
- import { NodeUpdateType } from '../core/constants.js';
- class ReferenceNode extends Node {
- constructor( property, inputType, object = null ) {
- super();
- this.property = property;
- this.inputType = inputType;
- this.object = object;
- this.node = null;
- this.updateType = NodeUpdateType.Object;
- this.setNodeType( inputType );
- }
- setNodeType( inputType ) {
- let node = null;
- let nodeType = inputType;
- if ( nodeType === 'float' ) {
- node = new FloatNode();
- } else if ( nodeType === 'vec2' ) {
- node = new Vector2Node( null );
- } else if ( nodeType === 'vec3' ) {
- node = new Vector3Node( null );
- } else if ( nodeType === 'vec4' ) {
- node = new Vector4Node( null );
- } else if ( nodeType === 'color' ) {
- node = new ColorNode( null );
- nodeType = 'vec3';
- } else if ( nodeType === 'texture' ) {
- node = new TextureNode();
- nodeType = 'vec4';
- }
- this.node = node;
- this.nodeType = nodeType;
- this.inputType = inputType;
- }
- getNodeType() {
- return this.inputType;
- }
- update( frame ) {
- const object = this.object !== null ? this.object : frame.object;
- const value = object[ this.property ];
- this.node.value = value;
- }
- generate( builder ) {
- return this.node.build( builder, this.getNodeType( builder ) );
- }
- }
- export default ReferenceNode;
|