Jelajahi Sumber

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 tahun lalu
induk
melakukan
5fcbe5aed2

+ 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;