[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40964] branches/cycles/source/blender/ editors/interface/interface_node.c: Cycles: add compatibility check to node link menu.

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Oct 12 18:09:37 CEST 2011


Revision: 40964
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40964
Author:   blendix
Date:     2011-10-12 16:09:35 +0000 (Wed, 12 Oct 2011)
Log Message:
-----------
Cycles: add compatibility check to node link menu.

Modified Paths:
--------------
    branches/cycles/source/blender/editors/interface/interface_node.c

Modified: branches/cycles/source/blender/editors/interface/interface_node.c
===================================================================
--- branches/cycles/source/blender/editors/interface/interface_node.c	2011-10-12 16:01:37 UTC (rev 40963)
+++ branches/cycles/source/blender/editors/interface/interface_node.c	2011-10-12 16:09:35 UTC (rev 40964)
@@ -33,6 +33,7 @@
 #include "MEM_guardedalloc.h"
 
 #include "DNA_node_types.h"
+#include "DNA_scene_types.h"
 #include "DNA_screen_types.h"
 
 #include "BLI_listbase.h"
@@ -44,6 +45,7 @@
 #include "BKE_library.h"
 #include "BKE_main.h"
 #include "BKE_node.h"
+#include "BKE_scene.h"
 
 #include "RNA_access.h"
 
@@ -271,7 +273,7 @@
 	return (typeA == typeB);
 }
 
-static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, const char *cname, int nclass)
+static void ui_node_menu_column(Main *bmain, NodeLinkArg *arg, uiLayout *layout, const char *cname, int nclass, int compatibility)
 {
 	bNodeTree *ntree = arg->ntree;
 	bNodeSocket *sock = arg->sock;
@@ -342,6 +344,9 @@
 			char name[UI_MAX_NAME_STR];
 			int i, j, num = 0;
 
+			if(!(ntype->compatibility & compatibility))
+				continue;
+
 			if(ntype->nclass != nclass)
 				continue;
 
@@ -392,22 +397,29 @@
 static void ui_template_node_link_menu(bContext *C, uiLayout *layout, void *but_p)
 {
 	Main *bmain= CTX_data_main(C);
+	Scene *scene= CTX_data_scene(C);
 	uiBlock *block = uiLayoutGetBlock(layout);
 	uiBut *but = (uiBut*)but_p;
 	uiLayout *split, *column;
 	NodeLinkArg *arg = (NodeLinkArg*)but->func_argN;
 	bNodeSocket *sock = arg->sock;
+	int compatibility;
+
+	if(scene_use_new_shading_nodes(scene))
+		compatibility= NODE_NEW_SHADING;
+	else
+		compatibility= NODE_OLD_SHADING;
 	
 	uiBlockSetCurLayout(block, layout);
 	split= uiLayoutSplit(layout, 0, 0);
 
-	ui_node_menu_column(bmain, arg, split, "Input", NODE_CLASS_INPUT);
-	ui_node_menu_column(bmain, arg, split, "Output", NODE_CLASS_OUTPUT);
-	ui_node_menu_column(bmain, arg, split, "Shader", NODE_CLASS_SHADER);
-	ui_node_menu_column(bmain, arg, split, "Texture", NODE_CLASS_TEXTURE);
-	ui_node_menu_column(bmain, arg, split, "Color", NODE_CLASS_OP_COLOR);
-	ui_node_menu_column(bmain, arg, split, "Vector", NODE_CLASS_OP_VECTOR);
-	ui_node_menu_column(bmain, arg, split, "Convertor", NODE_CLASS_CONVERTOR);
+	ui_node_menu_column(bmain, arg, split, "Input", NODE_CLASS_INPUT, compatibility);
+	ui_node_menu_column(bmain, arg, split, "Output", NODE_CLASS_OUTPUT, compatibility);
+	ui_node_menu_column(bmain, arg, split, "Shader", NODE_CLASS_SHADER, compatibility);
+	ui_node_menu_column(bmain, arg, split, "Texture", NODE_CLASS_TEXTURE, compatibility);
+	ui_node_menu_column(bmain, arg, split, "Color", NODE_CLASS_OP_COLOR, compatibility);
+	ui_node_menu_column(bmain, arg, split, "Vector", NODE_CLASS_OP_VECTOR, compatibility);
+	ui_node_menu_column(bmain, arg, split, "Convertor", NODE_CLASS_CONVERTOR, compatibility);
 
 	column= uiLayoutColumn(split, 0);
 	uiBlockSetCurLayout(block, column);
@@ -426,7 +438,7 @@
 		uiButSetNFunc(but, ui_node_link, MEM_dupallocN(arg), SET_INT_IN_POINTER(UI_NODE_LINK_DISCONNECT));
 	}
 
-	ui_node_menu_column(bmain, arg, column, "Group", NODE_CLASS_GROUP);
+	ui_node_menu_column(bmain, arg, column, "Group", NODE_CLASS_GROUP, compatibility);
 }
 
 void uiTemplateNodeLink(uiLayout *layout, bNodeTree *ntree, bNode *node, bNodeSocket *sock)




More information about the Bf-blender-cvs mailing list