瀏覽代碼

ShaderNode: Share nodeObjects (#23226)

sunag 3 年之前
父節點
當前提交
09eca6d577
共有 1 個文件被更改,包括 8 次插入5 次删除
  1. 8 5
      examples/jsm/renderers/nodes/ShaderNode.js

+ 8 - 5
examples/jsm/renderers/nodes/ShaderNode.js

@@ -69,6 +69,8 @@ const NodeHandler = {
 
 };
 
+const nodeObjects = new WeakMap();
+
 const ShaderNodeObject = ( obj ) => {
 
 	const type = typeof obj;
@@ -81,16 +83,17 @@ const ShaderNodeObject = ( obj ) => {
 
 		if ( obj.isNode === true ) {
 
-			const node = obj;
-
-			if ( node.isProxyNode !== true ) {
+			let nodeObject = nodeObjects.get( obj );
 
-				node.isProxyNode = true;
+			if ( nodeObject === undefined ) {
 
-				return new Proxy( node, NodeHandler );
+				nodeObject = new Proxy( obj, NodeHandler );
+				nodeObjects.set( obj, nodeObject );
 
 			}
 
+			return nodeObject;
+
 		}
 
 	}