[Bf-blender-cvs] [832f54a] master: Cycles: Filter Shader and Output nodes to their respective object/world node tree.

Thomas Dinges noreply at git.blender.org
Wed Oct 1 07:24:10 CEST 2014


Commit: 832f54a1aa582937d410b01f7f4b56751e0a30f6
Author: Thomas Dinges
Date:   Wed Oct 1 06:23:43 2014 +0200
Branches: master
https://developer.blender.org/rB832f54a1aa582937d410b01f7f4b56751e0a30f6

Cycles: Filter Shader and Output nodes to their respective object/world node tree.

Some nodes only work in certain node trees, so don't show them in the Add Node menu when this is the case.
This can probably be expanded to Input Nodes too, but need to double check some cases here still.

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

M	release/scripts/startup/nodeitems_builtins.py

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

diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py
index 5dccda7..8c2476b 100644
--- a/release/scripts/startup/nodeitems_builtins.py
+++ b/release/scripts/startup/nodeitems_builtins.py
@@ -112,6 +112,20 @@ def line_style_shader_nodes_poll(context):
             snode.shader_type == 'LINESTYLE')
 
 
+# only show nodes working in world node trees
+def world_shader_nodes_poll(context):
+    snode = context.space_data
+    return (snode.tree_type == 'ShaderNodeTree' and
+                snode.shader_type == 'WORLD')
+
+
+# only show nodes working in object node trees
+def object_shader_nodes_poll(context):
+    snode = context.space_data
+    return (snode.tree_type == 'ShaderNodeTree' and
+            snode.shader_type == 'OBJECT')
+
+
 # All standard node categories currently used in nodes.
 
 shader_node_categories = [
@@ -180,30 +194,30 @@ shader_node_categories = [
         NodeItem("NodeGroupInput", poll=group_input_output_item_poll),
         ]),
     ShaderNewNodeCategory("SH_NEW_OUTPUT", "Output", items=[
-        NodeItem("ShaderNodeOutputMaterial"),
-        NodeItem("ShaderNodeOutputLamp"),
-        NodeItem("ShaderNodeOutputWorld"),
+        NodeItem("ShaderNodeOutputMaterial", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeOutputLamp", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeOutputWorld", poll=world_shader_nodes_poll),
         NodeItem("ShaderNodeOutputLineStyle", poll=line_style_shader_nodes_poll),
         NodeItem("NodeGroupOutput", poll=group_input_output_item_poll),
         ]),
     ShaderNewNodeCategory("SH_NEW_SHADER", "Shader", items=[
         NodeItem("ShaderNodeMixShader"),
         NodeItem("ShaderNodeAddShader"),
-        NodeItem("ShaderNodeBsdfDiffuse"),
-        NodeItem("ShaderNodeBsdfGlossy"),
-        NodeItem("ShaderNodeBsdfTransparent"),
-        NodeItem("ShaderNodeBsdfRefraction"),
-        NodeItem("ShaderNodeBsdfGlass"),
-        NodeItem("ShaderNodeBsdfTranslucent"),
-        NodeItem("ShaderNodeBsdfAnisotropic"),
-        NodeItem("ShaderNodeBsdfVelvet"),
-        NodeItem("ShaderNodeBsdfToon"),
-        NodeItem("ShaderNodeSubsurfaceScattering"),
-        NodeItem("ShaderNodeEmission"),
-        NodeItem("ShaderNodeBsdfHair"),
-        NodeItem("ShaderNodeBackground"),
-        NodeItem("ShaderNodeAmbientOcclusion"),
-        NodeItem("ShaderNodeHoldout"),
+        NodeItem("ShaderNodeBsdfDiffuse", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfGlossy", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfTransparent", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfRefraction", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfGlass", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfTranslucent", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfAnisotropic", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfVelvet", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfToon", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeSubsurfaceScattering", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeEmission", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBsdfHair", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeBackground", poll=world_shader_nodes_poll),
+        NodeItem("ShaderNodeAmbientOcclusion", poll=object_shader_nodes_poll),
+        NodeItem("ShaderNodeHoldout", poll=object_shader_nodes_poll),
         NodeItem("ShaderNodeVolumeAbsorption"),
         NodeItem("ShaderNodeVolumeScatter"),
         ]),




More information about the Bf-blender-cvs mailing list