Browse Source

new nodes

sunag 4 years ago
parent
commit
a138da6a88

+ 47 - 0
examples/jsm/renderers/nodes/core/NodeFrame.js

@@ -0,0 +1,47 @@
+class NodeFrame {
+
+	constructor() {
+
+		this.time = 0;
+		this.deltaTime = 0;
+
+		this.frameId = 0;
+
+		this.startTime = null;
+
+		this.updateMap = new WeakMap();
+
+		this.renderer = null;
+		this.material = null;
+
+	}
+
+	updateNode( node ) {
+
+		if ( this.updateMap.get( node ) !== this.frameId ) {
+
+			this.updateMap.set( node, this.frameId );
+
+			node.update( this );
+
+		}
+
+	}
+
+	update() {
+
+		this.frameId ++;
+
+		if ( this.lastTime === undefined ) this.lastTime = performance.now();
+
+		this.deltaTime = ( performance.now() - this.lastTime ) / 1000;
+
+		this.lastTime = performance.now();
+
+		this.time += this.deltaTime;
+
+	}
+
+}
+
+export default NodeFrame;

+ 15 - 0
examples/jsm/renderers/nodes/inputs/ColorNode.js

@@ -0,0 +1,15 @@
+import InputNode from '../core/InputNode.js';
+
+class ColorNode extends InputNode {
+
+	constructor( value ) {
+
+		super( 'color' );
+
+		this.value = value;
+
+	}
+
+}
+
+export default ColorNode;

+ 15 - 0
examples/jsm/renderers/nodes/inputs/Vector2Node.js

@@ -0,0 +1,15 @@
+import InputNode from '../core/InputNode.js';
+
+class Vector2Node extends InputNode {
+
+	constructor( value ) {
+
+		super( 'vec2' );
+
+		this.value = value;
+
+	}
+
+}
+
+export default Vector2Node;

+ 15 - 0
examples/jsm/renderers/nodes/inputs/Vector4Node.js

@@ -0,0 +1,15 @@
+import InputNode from '../core/InputNode.js';
+
+class Vector4Node extends InputNode {
+
+	constructor( value ) {
+
+		super( 'vec4' );
+
+		this.value = value;
+
+	}
+
+}
+
+export default Vector4Node;

+ 33 - 0
examples/jsm/renderers/nodes/utils/SwitchNode.js

@@ -0,0 +1,33 @@
+import Node from '../core/Node.js';
+
+class SwitchNode extends Node {
+
+	constructor( node, components = 'x' ) {
+
+		super();
+
+		this.node = node;
+		this.components = components;
+
+	}
+
+	getType( builder ) {
+
+		return builder.getTypeFromLength( this.components.length );
+
+	}
+
+	generate( builder, output ) {
+
+		const nodeType = this.node.getType( builder );
+		const nodeSnippet = this.node.build( builder, nodeType );
+
+		const snippet = `${nodeSnippet}.${this.components}`;
+
+		return builder.format( snippet, this.getType( builder ), output );
+
+	}
+
+}
+
+export default SwitchNode;