[Bf-blender-cvs] [ad6d897] master: Fix T39848: Reroute nodes were not handled properly after compositor cleanup patch.

Lukas Tönne noreply at git.blender.org
Wed Apr 23 17:07:29 CEST 2014


Commit: ad6d897d98ce8c8ad31c37da7f4faafbbb11ef95
Author: Lukas Tönne
Date:   Wed Apr 23 17:00:04 2014 +0200
https://developer.blender.org/rBad6d897d98ce8c8ad31c37da7f4faafbbb11ef95

Fix T39848: Reroute nodes were not handled properly after compositor
cleanup patch.

These simply need a proxy node, which will be replaced by direct
operation links afterward.

===================================================================

M	source/blender/compositor/intern/COM_NodeGraph.cpp
M	source/blender/compositor/intern/COM_NodeGraph.h

===================================================================

diff --git a/source/blender/compositor/intern/COM_NodeGraph.cpp b/source/blender/compositor/intern/COM_NodeGraph.cpp
index d942d43..5c3de84 100644
--- a/source/blender/compositor/intern/COM_NodeGraph.cpp
+++ b/source/blender/compositor/intern/COM_NodeGraph.cpp
@@ -134,12 +134,16 @@ void NodeGraph::add_bNode(const CompositorContext &context, bNodeTree *b_ntree,
 	/* special node types */
 	if (b_node->type == NODE_GROUP) {
 		add_proxies_group(context, b_node, key);
-		return;
 	}
-	
-	Node *node = Converter::convert(b_node);
-	if (node)
-		add_node(node, b_ntree, key, is_active_group);
+	else if (b_node->type == NODE_REROUTE) {
+		add_proxies_reroute(b_ntree, b_node, key, is_active_group);
+	}
+	else {
+		/* regular nodes, handled in Converter */
+		Node *node = Converter::convert(b_node);
+		if (node)
+			add_node(node, b_ntree, key, is_active_group);
+	}
 }
 
 NodeInput *NodeGraph::find_input(const NodeRange &node_range, bNodeSocket *b_socket)
@@ -278,3 +282,9 @@ void NodeGraph::add_proxies_group(const CompositorContext &context, bNode *b_nod
 	
 	add_bNodeTree(context, nodes_start, b_group_tree, key);
 }
+
+void NodeGraph::add_proxies_reroute(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group)
+{
+	SocketProxyNode *proxy = new SocketProxyNode(b_node, (bNodeSocket *)b_node->inputs.first, (bNodeSocket *)b_node->outputs.first);
+	add_node(proxy, b_ntree, key, is_active_group);
+}
diff --git a/source/blender/compositor/intern/COM_NodeGraph.h b/source/blender/compositor/intern/COM_NodeGraph.h
index fab4f2b..81799d7 100644
--- a/source/blender/compositor/intern/COM_NodeGraph.h
+++ b/source/blender/compositor/intern/COM_NodeGraph.h
@@ -105,6 +105,8 @@ protected:
 	void add_proxies_group_outputs(bNode *b_node, bNode *b_node_io, bool use_buffer);
 	void add_proxies_group(const CompositorContext &context, bNode *b_node, bNodeInstanceKey key);
 
+	void add_proxies_reroute(bNodeTree *b_ntree, bNode *b_node, bNodeInstanceKey key, bool is_active_group);
+	
 #ifdef WITH_CXX_GUARDEDALLOC
 	MEM_CXX_CLASS_ALLOC_FUNCS("COM:NodeGraph")
 #endif




More information about the Bf-blender-cvs mailing list