[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55373] trunk/blender: Merge of the PyNodes branch (aka "custom nodes") into trunk.

Lukas Toenne lukas.toenne at googlemail.com
Mon Mar 18 17:34:58 CET 2013


Revision: 55373
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55373
Author:   lukastoenne
Date:     2013-03-18 16:34:57 +0000 (Mon, 18 Mar 2013)
Log Message:
-----------
Merge of the PyNodes branch (aka "custom nodes") into trunk.

PyNodes opens up the node system in Blender to scripters and adds a number of UI-level improvements.

=== Dynamic node type registration ===
Node types can now be added at runtime, using the RNA registration mechanism from python. This enables addons such as render engines to create a complete user interface with nodes.

Examples of how such nodes can be defined can be found in my personal wiki docs atm [1] and as a script template in release/scripts/templates_py/custom_nodes.py [2].

=== Node group improvements ===
Each node editor now has a tree history of edited node groups, which allows opening and editing nested node groups. The node editor also supports pinning now, so that different spaces can be used to edit different node groups simultaneously. For more ramblings and rationale see (really old) blog post on code.blender.org [3].

The interface of node groups has been overhauled. Sockets of a node group are no longer displayed in columns on either side, but instead special input/output nodes are used to mirror group sockets inside a node tree. This solves the problem of long node lines in groups and allows more adaptable node layout. Internal sockets can be exposed from a group by either connecting to the extension sockets in input/output nodes (shown as empty circle) or by adding sockets from the node property bar in the "Interface" panel. Further details such as the socket name can also be changed there.

[1] http://wiki.blender.org/index.php/User:Phonybone/Python_Nodes
[2] http://projects.blender.org/scm/viewvc.php/trunk/blender/release/scripts/templates_py/custom_nodes.py?view=markup&root=bf-blender
[3] http://code.blender.org/index.php/2012/01/improving-node-group-interface-editing/

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_python.cpp
    trunk/blender/intern/cycles/blender/blender_shader.cpp
    trunk/blender/intern/cycles/blender/blender_util.h
    trunk/blender/intern/cycles/render/graph.h
    trunk/blender/intern/cycles/render/nodes.cpp
    trunk/blender/intern/cycles/render/nodes.h
    trunk/blender/release/scripts/modules/bpy_types.py
    trunk/blender/release/scripts/startup/bl_operators/node.py
    trunk/blender/release/scripts/startup/bl_ui/space_node.py
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/blenkernel/intern/mask.c
    trunk/blender/source/blender/blenkernel/intern/material.c
    trunk/blender/source/blender/blenkernel/intern/movieclip.c
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenkernel/intern/texture.c
    trunk/blender/source/blender/blenlib/BLI_ghash.h
    trunk/blender/source/blender/blenlib/CMakeLists.txt
    trunk/blender/source/blender/blenlib/intern/BLI_ghash.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/readfile.h
    trunk/blender/source/blender/blenloader/intern/versioning_250.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp
    trunk/blender/source/blender/compositor/intern/COM_CompositorContext.h
    trunk/blender/source/blender/compositor/intern/COM_Converter.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
    trunk/blender/source/blender/compositor/intern/COM_InputSocket.cpp
    trunk/blender/source/blender/compositor/intern/COM_InputSocket.h
    trunk/blender/source/blender/compositor/intern/COM_Node.cpp
    trunk/blender/source/blender/compositor/intern/COM_Node.h
    trunk/blender/source/blender/compositor/intern/COM_NodeBase.h
    trunk/blender/source/blender/compositor/intern/COM_Socket.cpp
    trunk/blender/source/blender/compositor/intern/COM_Socket.h
    trunk/blender/source/blender/compositor/intern/COM_compositor.cpp
    trunk/blender/source/blender/compositor/nodes/COM_BlurNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_BokehBlurNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_ColorCurveNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_ColorNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_GroupNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_LensDistortionNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_NormalNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_SocketProxyNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_ValueNode.cpp
    trunk/blender/source/blender/compositor/operations/COM_PreviewOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_PreviewOperation.h
    trunk/blender/source/blender/editors/include/ED_node.h
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/include/UI_resources.h
    trunk/blender/source/blender/editors/include/UI_view2d.h
    trunk/blender/source/blender/editors/interface/interface_draw.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_intern.h
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/interface/interface_widgets.c
    trunk/blender/source/blender/editors/interface/resources.c
    trunk/blender/source/blender/editors/interface/view2d.c
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/editors/render/render_preview.c
    trunk/blender/source/blender/editors/render/render_shading.c
    trunk/blender/source/blender/editors/render/render_update.c
    trunk/blender/source/blender/editors/screen/screen_ops.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
    trunk/blender/source/blender/editors/space_buttons/buttons_texture.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_node/node_add.c
    trunk/blender/source/blender/editors/space_node/node_buttons.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_node/node_edit.c
    trunk/blender/source/blender/editors/space_node/node_group.c
    trunk/blender/source/blender/editors/space_node/node_header.c
    trunk/blender/source/blender/editors/space_node/node_intern.h
    trunk/blender/source/blender/editors/space_node/node_ops.c
    trunk/blender/source/blender/editors/space_node/node_relationships.c
    trunk/blender/source/blender/editors/space_node/node_select.c
    trunk/blender/source/blender/editors/space_node/node_templates.c
    trunk/blender/source/blender/editors/space_node/node_view.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/uvedit/uvedit_ops.c
    trunk/blender/source/blender/makesdna/DNA_node_types.h
    trunk/blender/source/blender/makesdna/DNA_space_types.h
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/RNA_define.h
    trunk/blender/source/blender/makesrna/RNA_enum_types.h
    trunk/blender/source/blender/makesrna/intern/CMakeLists.txt
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/makesrna/intern/rna_color.c
    trunk/blender/source/blender/makesrna/intern/rna_define.c
    trunk/blender/source/blender/makesrna/intern/rna_lamp.c
    trunk/blender/source/blender/makesrna/intern/rna_main_api.c
    trunk/blender/source/blender/makesrna/intern/rna_material.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/blender/makesrna/intern/rna_space.c
    trunk/blender/source/blender/makesrna/intern/rna_texture.c
    trunk/blender/source/blender/makesrna/intern/rna_ui_api.c
    trunk/blender/source/blender/makesrna/intern/rna_userdef.c
    trunk/blender/source/blender/makesrna/intern/rna_world.c
    trunk/blender/source/blender/nodes/CMakeLists.txt
    trunk/blender/source/blender/nodes/NOD_composite.h
    trunk/blender/source/blender/nodes/NOD_shader.h
    trunk/blender/source/blender/nodes/NOD_socket.h
    trunk/blender/source/blender/nodes/NOD_texture.h
    trunk/blender/source/blender/nodes/composite/node_composite_tree.c
    trunk/blender/source/blender/nodes/composite/node_composite_util.h
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_alphaOver.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_bilateralblur.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_blur.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_bokehblur.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_bokehimage.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_boxmask.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_brightness.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_channelMatte.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_chromaMatte.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_colorMatte.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_colorSpill.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_colorbalance.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_colorcorrection.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_common.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_composite.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_crop.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_curves.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_defocus.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_despeckle.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_diffMatte.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_dilate.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_directionalblur.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_displace.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_distanceMatte.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_doubleEdgeMask.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_ellipsemask.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_filter.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_flip.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_gamma.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_glare.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_hueSatVal.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_huecorrect.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_idMask.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_image.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_inpaint.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_invert.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_keyingscreen.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_lensdist.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_levels.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_lummaMatte.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_mapRange.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_mapUV.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_mapValue.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_mask.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_math.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_mixrgb.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_movieclip.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_moviedistortion.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_normal.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_normalize.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_outputFile.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_pixelate.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_premulkey.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_rgb.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_rotate.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_scale.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_sepcombHSVA.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_sepcombRGBA.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_sepcombYCCA.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_sepcombYUVA.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_setalpha.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_splitViewer.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_stabilize2d.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_switch.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_texture.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_tonemap.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_trackpos.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_transform.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_translate.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_valToRgb.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_value.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_vecBlur.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_viewer.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_zcombine.c
    trunk/blender/source/blender/nodes/intern/node_common.c
    trunk/blender/source/blender/nodes/intern/node_common.h
    trunk/blender/source/blender/nodes/intern/node_exec.c
    trunk/blender/source/blender/nodes/intern/node_exec.h
    trunk/blender/source/blender/nodes/intern/node_socket.c
    trunk/blender/source/blender/nodes/intern/node_util.c
    trunk/blender/source/blender/nodes/intern/node_util.h
    trunk/blender/source/blender/nodes/shader/node_shader_tree.c
    trunk/blender/source/blender/nodes/shader/node_shader_util.c
    trunk/blender/source/blender/nodes/shader/node_shader_util.h
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_add_shader.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_ambient_occlusion.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_attribute.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_background.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_brightness.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_anisotropic.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_diffuse.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_glass.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_glossy.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_refraction.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_translucent.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_transparent.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bsdf_velvet.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_bump.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_camera.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_common.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_curves.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_emission.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_fresnel.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_gamma.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_geom.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_geometry.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_hair_info.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_holdout.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_hueSatVal.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_invert.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_layer_weight.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_light_falloff.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_light_path.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_mapping.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_material.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_math.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_mixRgb.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_mix_shader.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_normal.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_normal_map.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_object_info.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_output.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_output_lamp.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_output_material.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_output_world.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_particle_info.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_rgb.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_script.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_sepcombRGB.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_squeeze.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tangent.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_brick.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_checker.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_coord.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_environment.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_gradient.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_image.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_magic.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_musgrave.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_noise.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_sky.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_tex_wave.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_texture.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_valToRgb.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_value.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_vectMath.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_volume_isotropic.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_volume_transparent.c
    trunk/blender/source/blender/nodes/texture/node_texture_tree.c
    trunk/blender/source/blender/nodes/texture/node_texture_util.c
    trunk/blender/source/blender/nodes/texture/node_texture_util.h
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_at.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_bricks.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_checker.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_common.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_compose.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_coord.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_curves.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_decompose.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_distance.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_hueSatVal.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_image.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_invert.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_math.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_mixRgb.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_output.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_proc.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_rotate.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_scale.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_texture.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_translate.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_valToNor.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_valToRgb.c
    trunk/blender/source/blender/nodes/texture/nodes/node_texture_viewer.c
    trunk/blender/source/blender/python/intern/bpy_rna.c
    trunk/blender/source/blender/render/intern/source/render_texture.c
    trunk/blender/source/blenderplayer/bad_level_call_stubs/stubs.c

Added Paths:
-----------
    trunk/blender/doc/python_api/examples/bpy.types.NodeTree.py
    trunk/blender/release/scripts/templates_py/custom_nodes.py
    trunk/blender/source/blender/nodes/NOD_common.h
    trunk/blender/source/blender/nodes/NOD_static_types.h
    trunk/blender/source/blender/nodes/composite/node_composite_util.c

Removed Paths:
-------------
    trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h

Added: trunk/blender/doc/python_api/examples/bpy.types.NodeTree.py
===================================================================
--- trunk/blender/doc/python_api/examples/bpy.types.NodeTree.py	                        (rev 0)
+++ trunk/blender/doc/python_api/examples/bpy.types.NodeTree.py	2013-03-18 16:34:57 UTC (rev 55373)
@@ -0,0 +1,23 @@
+"""
+Poll Function
++++++++++++++++
+The :class:`NodeTree.poll` function determines if a node tree is visible
+in the given context (similar to how :class:`Panel.poll`
+and :class:`Menu.poll` define visibility). If it returns False,
+the node tree type will not be selectable in the node editor.
+
+A typical condition for shader nodes would be to check the active render engine
+of the scene and only show nodes of the renderer they are designed for.
+"""
+import bpy
+
+
+class CyclesNodeTree(bpy.types.NodeTree):
+    """ This operator is only visible when Cycles is the selected render engine"""
+    bl_label = "Cycles Node Tree"
+
+    @classmethod
+    def poll(cls, context):
+        return context.scene.render.engine == 'CYCLES'
+
+bpy.utils.register_class(CyclesNodeTree)

Modified: trunk/blender/intern/cycles/blender/blender_python.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_python.cpp	2013-03-18 16:17:45 UTC (rev 55372)
+++ trunk/blender/intern/cycles/blender/blender_python.cpp	2013-03-18 16:34:57 UTC (rev 55373)
@@ -207,6 +207,7 @@
 }
 
 #ifdef WITH_OSL
+
 static PyObject *osl_update_node_func(PyObject *self, PyObject *args)
 {
 	PyObject *pynodegroup, *pynode;
@@ -248,17 +249,19 @@
 			continue;
 
 		/* determine socket type */
-		BL::NodeSocket::type_enum socket_type;
-		float default_float4[4] = {0.0f, 0.0f, 0.0f, 1.0f};
+		std::string socket_type;
+		BL::NodeSocket::type_enum data_type = BL::NodeSocket::type_VALUE;
+		float4 default_float4 = make_float4(0.0f, 0.0f, 0.0f, 1.0f);
 		float default_float = 0.0f;
 		int default_int = 0;
 		std::string default_string = "";
 		
 		if(param->isclosure) {
-			socket_type = BL::NodeSocket::type_SHADER;
+			socket_type = "NodeSocketShader";
 		}
 		else if(param->type.vecsemantics == TypeDesc::COLOR) {
-			socket_type = BL::NodeSocket::type_RGBA;
+			socket_type = "NodeSocketColor";
+			data_type = BL::NodeSocket::type_RGBA;
 
 			if(param->validdefault) {
 				default_float4[0] = param->fdefault[0];
@@ -269,7 +272,8 @@
 		else if(param->type.vecsemantics == TypeDesc::POINT ||
 		        param->type.vecsemantics == TypeDesc::VECTOR ||
 		        param->type.vecsemantics == TypeDesc::NORMAL) {
-			socket_type = BL::NodeSocket::type_VECTOR;
+			socket_type = "NodeSocketVector";
+			data_type = BL::NodeSocket::type_VECTOR;
 
 			if(param->validdefault) {
 				default_float4[0] = param->fdefault[0];
@@ -279,17 +283,20 @@
 		}
 		else if(param->type.aggregate == TypeDesc::SCALAR) {
 			if(param->type.basetype == TypeDesc::INT) {
-				socket_type = BL::NodeSocket::type_INT;
+				socket_type = "NodeSocketInt";
+				data_type = BL::NodeSocket::type_INT;
 				if(param->validdefault)
 					default_int = param->idefault[0];
 			}
 			else if(param->type.basetype == TypeDesc::FLOAT) {
-				socket_type = BL::NodeSocket::type_VALUE;
+				socket_type = "NodeSocketFloat";
+				data_type = BL::NodeSocket::type_VALUE;
 				if(param->validdefault)
 					default_float = param->fdefault[0];
 			}
 			else if(param->type.basetype == TypeDesc::STRING) {
-				socket_type =  BL::NodeSocket::type_STRING;
+				socket_type = "NodeSocketString";
+				data_type = BL::NodeSocket::type_STRING;
 				if(param->validdefault)
 					default_string = param->sdefault[0];
 			}
@@ -300,38 +307,52 @@
 			continue;
 
 		/* find socket socket */
-		BL::NodeSocket b_sock = b_node.find_socket(param->name.c_str(), param->isoutput);
-
-		/* remove if type no longer matches */
-		if(b_sock && b_sock.type() != socket_type) {
-			b_node.remove_socket(b_sock);
-			b_sock = BL::NodeSocket(PointerRNA_NULL);
+		BL::NodeSocket b_sock(PointerRNA_NULL);
+		if (param->isoutput) {
+			b_sock = b_node.outputs[param->name];
+			
+			/* remove if type no longer matches */
+			if(b_sock && b_sock.bl_idname() != socket_type) {
+				b_node.outputs.remove(b_sock);
+				b_sock = BL::NodeSocket(PointerRNA_NULL);
+			}
+			
+			if (!b_sock) {
+				/* create new socket */
+				b_sock = b_node.outputs.create(socket_type.c_str(), param->name.c_str(), param->name.c_str());
+			}
 		}
+		else {
+			b_sock = b_node.inputs[param->name];
+			
+			/* remove if type no longer matches */
+			if(b_sock && b_sock.bl_idname() != socket_type) {
+				b_node.inputs.remove(b_sock);
+				b_sock = BL::NodeSocket(PointerRNA_NULL);
+			}
+			
+			if (!b_sock) {
+				/* create new socket */
+				b_sock = b_node.inputs.create(socket_type.c_str(), param->name.c_str(), param->name.c_str());
+			}
+		}
 
-		/* create new socket */
-		if(!b_sock) {
-			b_sock = b_node.add_socket(param->name.c_str(), socket_type, param->isoutput);
-
-			/* set default value */
-			if(socket_type == BL::NodeSocket::type_VALUE) {
-				BL::NodeSocketFloatNone b_float_sock(b_sock.ptr);
-				b_float_sock.default_value(default_float);
+		/* set default value */
+		if(b_sock) {
+			if(data_type == BL::NodeSocket::type_VALUE) {
+				set_float(b_sock.ptr, "default_value", default_float);
 			}
-			else if(socket_type == BL::NodeSocket::type_INT) {
-				BL::NodeSocketIntNone b_int_sock(b_sock.ptr);
-				b_int_sock.default_value(default_int);
+			else if(data_type == BL::NodeSocket::type_INT) {
+				set_int(b_sock.ptr, "default_value", default_int);
 			}
-			else if(socket_type == BL::NodeSocket::type_RGBA) {
-				BL::NodeSocketRGBA b_rgba_sock(b_sock.ptr);
-				b_rgba_sock.default_value(default_float4);
+			else if(data_type == BL::NodeSocket::type_RGBA) {
+				set_float4(b_sock.ptr, "default_value", default_float4);
 			}
-			else if(socket_type == BL::NodeSocket::type_VECTOR) {
-				BL::NodeSocketVectorNone b_vector_sock(b_sock.ptr);
-				b_vector_sock.default_value(default_float4);
+			else if(data_type == BL::NodeSocket::type_VECTOR) {
+				set_float3(b_sock.ptr, "default_value", float4_to_float3(default_float4));
 			}
-			else if(socket_type == BL::NodeSocket::type_STRING) {
-				BL::NodeSocketStringNone b_string_sock(b_sock.ptr);
-				b_string_sock.default_value(default_string);
+			else if(data_type == BL::NodeSocket::type_STRING) {
+				set_string(b_sock.ptr, "default_value", default_string);
 			}
 		}
 
@@ -349,7 +370,7 @@
 
 		for (b_node.inputs.begin(b_input); b_input != b_node.inputs.end(); ++b_input) {
 			if(used_sockets.find(b_input->ptr.data) == used_sockets.end()) {
-				b_node.remove_socket(*b_input);
+				b_node.inputs.remove(*b_input);
 				removed = true;
 				break;
 			}
@@ -357,7 +378,7 @@
 
 		for (b_node.outputs.begin(b_output); b_output != b_node.outputs.end(); ++b_output) {
 			if(used_sockets.find(b_output->ptr.data) == used_sockets.end()) {
-				b_node.remove_socket(*b_output);
+				b_node.outputs.remove(*b_output);
 				removed = true;
 				break;
 			}

Modified: trunk/blender/intern/cycles/blender/blender_shader.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_shader.cpp	2013-03-18 16:17:45 UTC (rev 55372)
+++ trunk/blender/intern/cycles/blender/blender_shader.cpp	2013-03-18 16:34:57 UTC (rev 55373)
@@ -31,9 +31,9 @@
 
 CCL_NAMESPACE_BEGIN
 
-typedef map<void*, ShaderNode*> PtrNodeMap;
-typedef pair<ShaderNode*, std::string> SocketPair;
-typedef map<void*, SocketPair> PtrSockMap;
+typedef map<void*, ShaderInput*> PtrInputMap;
+typedef map<void*, ShaderOutput*> PtrOutputMap;
+typedef map<std::string, ProxyNode*> ProxyMap;
 
 /* Find */
 
@@ -55,83 +55,88 @@
 static BL::NodeSocket get_node_output(BL::Node b_node, const string& name)
 {
 	BL::Node::outputs_iterator b_out;
-
+	
 	for(b_node.outputs.begin(b_out); b_out != b_node.outputs.end(); ++b_out)
 		if(b_out->name() == name)
 			return *b_out;
-
+	
 	assert(0);
-
+	
 	return *b_out;
 }
 
 static float3 get_node_output_rgba(BL::Node b_node, const string& name)
 {
-	BL::NodeSocketRGBA sock(get_node_output(b_node, name));
-	return get_float3(sock.default_value());
+	BL::NodeSocket b_sock = get_node_output(b_node, name);
+	float value[4];
+	RNA_float_get_array(&b_sock.ptr, "default_value", value);
+	return make_float3(value[0], value[1], value[2]);
 }
 
 static float get_node_output_value(BL::Node b_node, const string& name)
 {
-	BL::NodeSocketFloatNone sock(get_node_output(b_node, name));
-	return sock.default_value();
+	BL::NodeSocket b_sock = get_node_output(b_node, name);
+	return RNA_float_get(&b_sock.ptr, "default_value");
 }
 
-static ShaderSocketType convert_socket_type(BL::NodeSocket::type_enum b_type)
+static float3 get_node_output_vector(BL::Node b_node, const string& name)
 {
-	switch (b_type) {
-	case BL::NodeSocket::type_VALUE:
-		return SHADER_SOCKET_FLOAT;
-	case BL::NodeSocket::type_INT:
-		return SHADER_SOCKET_INT;
-	case BL::NodeSocket::type_VECTOR:
-		return SHADER_SOCKET_VECTOR;
-	case BL::NodeSocket::type_RGBA:
-		return SHADER_SOCKET_COLOR;
-	case BL::NodeSocket::type_SHADER:
-		return SHADER_SOCKET_CLOSURE;
-	case BL::NodeSocket::type_STRING:
-		return SHADER_SOCKET_STRING;
-	
-	case BL::NodeSocket::type_BOOLEAN:
-	case BL::NodeSocket::type_MESH:
-	default:
-		return SHADER_SOCKET_FLOAT;
+	BL::NodeSocket b_sock = get_node_output(b_node, name);
+	float value[3];
+	RNA_float_get_array(&b_sock.ptr, "default_value", value);
+	return make_float3(value[0], value[1], value[2]);
+}
+
+static ShaderSocketType convert_socket_type(BL::NodeSocket b_socket)
+{
+	switch (b_socket.type()) {
+		case BL::NodeSocket::type_VALUE:
+			return SHADER_SOCKET_FLOAT;
+		case BL::NodeSocket::type_INT:
+			return SHADER_SOCKET_INT;
+		case BL::NodeSocket::type_VECTOR:
+			return SHADER_SOCKET_VECTOR;
+		case BL::NodeSocket::type_RGBA:
+			return SHADER_SOCKET_COLOR;
+		case BL::NodeSocket::type_STRING:
+			return SHADER_SOCKET_STRING;
+		case BL::NodeSocket::type_SHADER:
+			return SHADER_SOCKET_CLOSURE;
+		
+		default:
+			return SHADER_SOCKET_UNDEFINED;
 	}
 }
 
-static void set_default_value(ShaderInput *input, BL::NodeSocket sock, BL::BlendData b_data, BL::ID b_id)
+static void set_default_value(ShaderInput *input, BL::Node b_node, BL::NodeSocket b_sock, BL::BlendData b_data, BL::ID b_id)
 {
 	/* copy values for non linked inputs */
 	switch(input->type) {
 	case SHADER_SOCKET_FLOAT: {
-		BL::NodeSocketFloatNone value_sock(sock);

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list