[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51598] trunk/blender/intern/cycles/ blender/blender_shader.cpp: Fix #31894: cycles node muting not working, was not implemented yet.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Oct 24 23:05:46 CEST 2012


Revision: 51598
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51598
Author:   blendix
Date:     2012-10-24 21:05:44 +0000 (Wed, 24 Oct 2012)
Log Message:
-----------
Fix #31894: cycles node muting not working, was not implemented yet.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_shader.cpp

Modified: trunk/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_shader.cpp	2012-10-24 19:26:00 UTC (rev 51597)
+++ trunk/blender/intern/cycles/blender/blender_shader.cpp	2012-10-24 21:05:44 UTC (rev 51598)
@@ -583,7 +583,34 @@
 	PtrSockMap proxy_map;
 
 	for(b_ntree.nodes.begin(b_node); b_node != b_ntree.nodes.end(); ++b_node) {
-		if(b_node->is_a(&RNA_NodeGroup)) {
+		if(b_node->mute()) {
+			BL::Node::inputs_iterator b_input;
+			BL::Node::outputs_iterator b_output;
+			bool found_match = false;
+
+			/* this is slightly different than blender logic, we just connect a
+			 * single pair for of input/output, but works ok for the node we have */
+			for(b_node->inputs.begin(b_input); b_input != b_node->inputs.end(); ++b_input) {
+				if(b_input->is_linked()) {
+					for(b_node->outputs.begin(b_output); b_output != b_node->outputs.end(); ++b_output) {
+						if(b_output->is_linked() && b_input->type() == b_output->type()) {
+							ProxyNode *proxy = new ProxyNode(convert_socket_type(b_input->type()), convert_socket_type(b_output->type()));
+							graph->add(proxy);
+
+							proxy_map[b_input->ptr.data] = SocketPair(proxy, proxy->inputs[0]->name);
+							proxy_map[b_output->ptr.data] = SocketPair(proxy, proxy->outputs[0]->name);
+							found_match = true;
+
+							break;
+						}
+					}
+				}
+
+				if(found_match)
+					break;
+			}
+		}
+		else if(b_node->is_a(&RNA_NodeGroup)) {
 			/* add proxy converter nodes for inputs and outputs */
 			BL::NodeGroup b_gnode(*b_node);
 			BL::ShaderNodeTree b_group_ntree(b_gnode.node_tree());
@@ -663,7 +690,7 @@
 
 		/* from sock */
 		if(b_from_node) {
-			if (b_from_node.is_a(&RNA_NodeGroup))
+			if (b_from_node.mute() || b_from_node.is_a(&RNA_NodeGroup))
 				from_pair = proxy_map[b_from_sock.ptr.data];
 			else
 				from_pair = node_socket_map_pair(node_map, b_from_node, b_from_sock);
@@ -673,7 +700,7 @@
 
 		/* to sock */
 		if(b_to_node) {
-			if (b_to_node.is_a(&RNA_NodeGroup))
+			if (b_to_node.mute() || b_to_node.is_a(&RNA_NodeGroup))
 				to_pair = proxy_map[b_to_sock.ptr.data];
 			else
 				to_pair = node_socket_map_pair(node_map, b_to_node, b_to_sock);




More information about the Bf-blender-cvs mailing list