浏览代码

NodeLoader: Deserialize sub-properties and fixes. (#25590)

* Node: Deserialize sub-properties.

* NodeLoader: Fix get json.type.

* Node: New inputObject to deserialize().

* ConvertNode: Fix serialize .convertTo property.
sunag 2 年之前
父节点
当前提交
5fcbe5aed2
共有 3 个文件被更改,包括 31 次插入1 次删除
  1. 14 0
      examples/jsm/nodes/core/Node.js
  2. 1 1
      examples/jsm/nodes/loaders/NodeLoader.js
  3. 16 0
      examples/jsm/nodes/utils/ConvertNode.js

+ 14 - 0
examples/jsm/nodes/core/Node.js

@@ -293,6 +293,20 @@ class Node {
 
 					this[ property ] = inputArray;
 
+				} else if ( typeof json.inputNodes[ property ] === 'object' ) {
+
+					const inputObject = {};
+
+					for ( const subProperty in json.inputNodes[ property ] ) {
+
+						const uuid = json.inputNodes[ property ][ subProperty ];
+					
+						inputObject[ subProperty ] = nodes[ uuid ];
+					
+					}
+
+					this[ property ] = inputObject;
+
 				} else {
 
 					const uuid = json.inputNodes[ property ];

+ 1 - 1
examples/jsm/nodes/loaders/NodeLoader.js

@@ -80,7 +80,7 @@ class NodeLoader extends Loader {
 
 	parse( json ) {
 
-		const node = nodeObject( createNodeFromType( type ) );
+		const node = nodeObject( createNodeFromType( json.type ) );
 		node.uuid = json.uuid;
 
 		const nodes = this.parseNodes( json.nodes );

+ 16 - 0
examples/jsm/nodes/utils/ConvertNode.js

@@ -31,6 +31,22 @@ class ConvertNode extends Node {
 
 	}
 
+	serialize( data ) {
+
+		super.serialize( data );
+
+		data.convertTo = this.convertTo;
+
+	}
+
+	deserialize( data ) {
+
+		super.deserialize( data );
+
+		this.convertTo = data.convertTo;
+
+	}
+
 	generate( builder, output ) {
 
 		const node = this.node;