Revision: 39941
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39941
Author:   lukastoenne
Date:     2011-09-05 21:01:50 +0000 (Mon, 05 Sep 2011)
Log Message:
-----------
Merged the particles-2010 branch with node improvements into trunk.

This branch adds mostly organizational improvements to the node system by 
renaming the node folders and files. A couple of internal features have been 
added too.
Detailed information can be found on the wiki page:

http://wiki.blender.org/index.php/User:Phonybone/Particles2010

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/blenkernel/intern/material.c
    trunk/blender/source/blender/blenkernel/intern/node.c
    trunk/blender/source/blender/blenkernel/intern/texture.c
    trunk/blender/source/blender/blenlib/BLI_math_matrix.h
    trunk/blender/source/blender/blenlib/BLI_math_vector.h
    trunk/blender/source/blender/blenlib/intern/math_matrix.c
    trunk/blender/source/blender/blenlib/intern/math_vector.c
    trunk/blender/source/blender/blenloader/CMakeLists.txt
    trunk/blender/source/blender/blenloader/SConscript
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/include/ED_node.h
    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_node/drawnode.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_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_select.c
    trunk/blender/source/blender/editors/space_node/node_state.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/gpu/SConscript
    trunk/blender/source/blender/makesdna/DNA_node_types.h
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/RNA_enum_types.h
    trunk/blender/source/blender/makesrna/RNA_types.h
    trunk/blender/source/blender/makesrna/SConscript
    trunk/blender/source/blender/makesrna/intern/rna_access.c
    trunk/blender/source/blender/makesrna/intern/rna_main_api.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree_types.h
    trunk/blender/source/blender/makesrna/intern/rna_object.c
    trunk/blender/source/blender/makesrna/intern/rna_rna.c
    trunk/blender/source/blender/makesrna/intern/rna_space.c
    trunk/blender/source/blender/modifiers/CMakeLists.txt
    trunk/blender/source/blender/modifiers/SConscript
    trunk/blender/source/blender/nodes/CMakeLists.txt
    trunk/blender/source/blender/nodes/SConscript
    trunk/blender/source/blender/nodes/intern/node_util.c
    trunk/blender/source/blender/nodes/intern/node_util.h
    trunk/blender/source/blender/render/intern/source/render_texture.c
    trunk/blender/source/creator/CMakeLists.txt

Added Paths:
-----------
    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/
    trunk/blender/source/blender/nodes/composite/node_composite_tree.c
    trunk/blender/source/blender/nodes/composite/node_composite_util.c
    trunk/blender/source/blender/nodes/composite/node_composite_util.h
    trunk/blender/source/blender/nodes/composite/nodes/
    
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_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_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_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_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_invert.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_mapUV.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_mapValue.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_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_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_texture.c
    trunk/blender/source/blender/nodes/composite/nodes/node_composite_tonemap.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/shader/
    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/
    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_dynamic.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_geom.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_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_normal.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_output.c
    trunk/blender/source/blender/nodes/shader/nodes/node_shader_rgb.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_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/texture/
    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/
    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

Removed Paths:
-------------
    trunk/blender/source/blender/nodes/CMP_node.h
    trunk/blender/source/blender/nodes/SHD_node.h
    trunk/blender/source/blender/nodes/TEX_node.h
    trunk/blender/source/blender/nodes/intern/CMP_nodes/
    trunk/blender/source/blender/nodes/intern/CMP_util.c
    trunk/blender/source/blender/nodes/intern/CMP_util.h
    trunk/blender/source/blender/nodes/intern/SHD_nodes/
    trunk/blender/source/blender/nodes/intern/SHD_util.c
    trunk/blender/source/blender/nodes/intern/SHD_util.h
    trunk/blender/source/blender/nodes/intern/TEX_nodes/
    trunk/blender/source/blender/nodes/intern/TEX_util.c
    trunk/blender/source/blender/nodes/intern/TEX_util.h

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h       2011-09-05 
20:43:45 UTC (rev 39940)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h       2011-09-05 
21:01:50 UTC (rev 39941)
@@ -44,7 +44,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION                        259
-#define BLENDER_SUBVERSION             1
+#define BLENDER_SUBVERSION             2
 
 #define BLENDER_MINVERSION             250
 #define BLENDER_MINSUBVERSION  0

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h  2011-09-05 20:43:45 UTC 
(rev 39940)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h  2011-09-05 21:01:50 UTC 
(rev 39941)
@@ -37,6 +37,10 @@
  *  \ingroup bke
  */
 
+#include "DNA_listBase.h"
+
+#include "RNA_types.h"
+
 /* not very important, but the stack solver likes to know a maximum */
 #define MAX_SOCKET     64
 
@@ -46,63 +50,151 @@
 struct bNodeSocket;
 struct bNodeStack;
 struct bNodeTree;
+struct bNodeTreeExec;
 struct GPUMaterial;
 struct GPUNode;
 struct GPUNodeStack;
 struct ID;
 struct ListBase;
 struct Main;
+struct uiBlock;
+struct uiLayout;
 struct MTex;
 struct PointerRNA;
 struct rctf;
 struct RenderData;
 struct Scene;
 struct Tex;
-struct uiLayout;
+struct SpaceNode;
+struct ARegion;
+struct Object;
 
-
 /* ************** NODE TYPE DEFINITIONS ***** */
 
-typedef struct bNodeSocketType {
+/** Compact definition of a node socket.
+ * Can be used to quickly define a list of static sockets for a node,
+ * which are added to each new node of that type. 
+ *
+ * \deprecated New nodes should add default sockets in the initialization
+ * function instead. This struct is mostly kept for old nodes and should
+ * be removed some time.
+ */
+typedef struct bNodeSocketTemplate {
        int type, limit;
-       const char *name;
-       float val1, val2, val3, val4;   /* default alloc value for inputs */
-       float min, max;                                 /* default range for 
inputs */
+       char name[32];
+       float val1, val2, val3, val4;   /* default alloc value for inputs */
+       float min, max;
+       PropertySubType subtype;
        
        /* after this line is used internal only */
-       struct bNodeSocket *sock;               /* used during verify_types */
+       struct bNodeSocket *sock;               /* used to hold verified socket 
*/
+} bNodeSocketTemplate;
+
+typedef void (*NodeSocketButtonFunction)(const struct bContext *C, struct 
uiBlock *block, 
+                                                                               
 struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock,
+                                                                               
 const char *name, int x, int y, int width);
+
+/** Defines a socket type.
+ * Defines the appearance and behavior of a socket in the UI.
+ */
+typedef struct bNodeSocketType {
+       int type;
+       char ui_name[32];
+       char ui_description[128];
+       int ui_icon;
+       char ui_color[4];
+       
+       const char *value_structname;
+       int value_structsize;
+       
+       NodeSocketButtonFunction buttonfunc;
 } bNodeSocketType;
 
+/** Template for creating a node.
+ * Stored required parameters to make a new node of a specific type.
+ */
+typedef struct bNodeTemplate {
+       int type;
+       
+       /* group tree */
+       struct bNodeTree *ngroup;
+} bNodeTemplate;
+
+/** Defines a node type.
+ * Initial attributes and constants for a node as well as callback functions
+ * implementing the node behavior.
+ */
 typedef struct bNodeType {
        void *next,*prev;
+       short needs_free;               /* set for allocated types that need to 
be freed */
+       
        int type;
-       const char *name; /* can be allocated too */
+       char name[32];
        float width, minwidth, maxwidth;
+       float height, minheight, maxheight;
        short nclass, flag;
        
-       bNodeSocketType *inputs, *outputs;
+       /* templates for static sockets */
+       bNodeSocketTemplate *inputs, *outputs;
        
        char storagename[64];                   /* struct name for DNA */
        
-       void (*execfunc)(void *data, struct bNode *, struct bNodeStack **, 
struct bNodeStack **);
-       
-       /* this line is set on startup of blender */
+       /// Main draw function for the node.
+       void (*drawfunc)(const struct bContext *C, struct ARegion *ar, struct 
SpaceNode *snode, struct bNodeTree *ntree, struct bNode *node);
+       /// Updates the node geometry attributes according to internal state 
before actual drawing.
+       void (*drawupdatefunc)(const struct bContext *C, struct bNodeTree 
*ntree, struct bNode *node);
+       /// Draw the option buttons on the node.
        void (*uifunc)(struct uiLayout *, struct bContext *C, struct PointerRNA 
*ptr);
+       /// Additional parameters in the side panel.
        void (*uifuncbut)(struct uiLayout *, struct bContext *C, struct 
PointerRNA *ptr);
+       /// Optional custom label function for the node header.
        const char *(*labelfunc)(struct bNode *);
-
-       void (*initfunc)(struct bNode *);
-       void (*freestoragefunc)(struct bNode *);
-       void (*copystoragefunc)(struct bNode *, struct bNode *);
+       /// Optional custom resize handle polling.
+       int (*resize_area_func)(struct bNode *node, int x, int y);
        
-       /* for use with dynamic typedefs */
-       ID *id;
-       void *pynode; /* holds pointer to python script */
-       void *pydict; /* holds pointer to python script dictionary (scope)*/
-
+       /// Called when the node is updated in the editor.
+       void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node);
+       /// Check and update if internal ID data has changed.
+       void (*verifyfunc)(struct bNodeTree *ntree, struct bNode *node, struct 
ID *id);
+       
+       /// Initialize a new node instance of this type after creation.
+       void (*initfunc)(struct bNodeTree *ntree, struct bNode *node, struct 
bNodeTemplate *ntemp);
+       /// Free the custom storage data.
+       void (*freestoragefunc)(struct bNode *node);
+       /// Make a copy of the custom storage data.
+       void (*copystoragefunc)(struct bNode *node, struct bNode *target);
+       
+       /// Create a template from an existing node.
+       struct bNodeTemplate (*templatefunc)(struct bNode *);
+       /** If a node can be made from the template in the given node tree.
+        * \example Node groups can not be created inside their own node tree.
+        */
+       int (*validfunc)(struct bNodeTree *ntree, struct bNodeTemplate *ntemp);
+       
+       /// Initialize a node tree associated to this node type.
+       void (*inittreefunc)(struct bNodeTree *ntree);
+       /// Update a node tree associated to this node type.
+       void (*updatetreefunc)(struct bNodeTree *ntree);
+       
+       /* group edit callbacks for operators */
+       /* XXX this is going to be changed as required by the UI */
+       struct bNodeTree *(*group_edit_get)(struct bNode *node);
+       struct bNodeTree *(*group_edit_set)(struct bNode *node, int edit);
+       void (*group_edit_clear)(struct bNode *node);
+       
+       
+       /* **** execution callbacks **** */
+       void *(*initexecfunc)(struct bNode *node);
+       void (*freeexecfunc)(struct bNode *node, void *nodedata);
+       void (*execfunc)(void *data, struct bNode *, struct bNodeStack **, 
struct bNodeStack **);
+       /* XXX this alternative exec function has been added to avoid changing 
all node types.
+        * when a final generic version of execution code is defined, this will 
be changed anyway
+        */
+       void (*newexecfunc)(void *data, int thread, struct bNode *, void 
*nodedata, struct bNodeStack **, struct bNodeStack **);
        /* gpu */
        int (*gpufunc)(struct GPUMaterial *mat, struct bNode *node, struct 
GPUNodeStack *in, struct GPUNodeStack *out);
-
+       /* extended gpu function */
+       int (*gpuextfunc)(struct GPUMaterial *mat, struct bNode *node, void 
*nodedata, struct GPUNodeStack *in, struct GPUNodeStack *out);
 } bNodeType;
 
 /* node->exec, now in use for composites (#define for break is same as ready 
yes) */
@@ -113,72 +205,124 @@
 #define NODE_FREEBUFS  8
 #define NODE_SKIPPED   16
 
+/* sim_exec return value */
+#define NODE_EXEC_FINISHED     0
+#define NODE_EXEC_SUSPEND      1
+
 /* nodetype->nclass, for add-menu and themes */
-#define NODE_CLASS_INPUT               0
-#define NODE_CLASS_OUTPUT              1
-#define NODE_CLASS_OP_COLOR            3
-#define NODE_CLASS_OP_VECTOR   4
-#define NODE_CLASS_OP_FILTER   5
-#define NODE_CLASS_GROUP               6
-#define NODE_CLASS_FILE                        7
-#define NODE_CLASS_CONVERTOR   8
-#define NODE_CLASS_MATTE               9
-#define NODE_CLASS_DISTORT             10
-#define NODE_CLASS_OP_DYNAMIC  11
-#define NODE_CLASS_PATTERN 12
-#define NODE_CLASS_TEXTURE 13
+#define NODE_CLASS_INPUT                       0
+#define NODE_CLASS_OUTPUT                      1
+#define NODE_CLASS_OP_COLOR                    3
+#define NODE_CLASS_OP_VECTOR           4
+#define NODE_CLASS_OP_FILTER           5
+#define NODE_CLASS_GROUP                       6
+#define NODE_CLASS_FILE                                7
+#define NODE_CLASS_CONVERTOR           8
+#define NODE_CLASS_MATTE                       9
+#define NODE_CLASS_DISTORT                     10
+#define NODE_CLASS_OP_DYNAMIC          11
+#define NODE_CLASS_PATTERN                     12
+#define NODE_CLASS_TEXTURE                     13
+#define NODE_CLASS_EXECUTION           14
+#define NODE_CLASS_GETDATA                     15
+#define NODE_CLASS_SETDATA                     16
+#define NODE_CLASS_MATH                                17
+#define NODE_CLASS_MATH_VECTOR         18
+#define NODE_CLASS_MATH_ROTATION       19
+#define NODE_CLASS_PARTICLES           25
+#define NODE_CLASS_TRANSFORM           30
+#define NODE_CLASS_COMBINE                     31
+#define NODE_CLASS_LAYOUT                      100
 
 /* enum values for input/output */
 #define SOCK_IN                1
 #define SOCK_OUT       2
 
+struct bNodeTreeExec;
+
+typedef void (*bNodeTreeCallback)(void *calldata, struct ID *owner_id, struct 
bNodeTree *ntree);
+typedef struct bNodeTreeType
+{
+       int type;                                               /* type 
identifier */
+       char idname[64];                                /* id name for RNA 
identification */
+       
+       ListBase node_types;                    /* type definitions */
+       
+       /* callbacks */
+       void (*free_cache)(struct bNodeTree *ntree);
+       void (*free_node_cache)(struct bNodeTree *ntree, struct bNode *node);
+       void (*foreach_nodetree)(struct Main *main, void *calldata, 
bNodeTreeCallback func);            /* iteration over all node trees */
+
+       /* calls allowing threaded composite */
+       void (*localize)(struct bNodeTree *localtree, struct bNodeTree *ntree);
+       void (*local_sync)(struct bNodeTree *localtree, struct bNodeTree 
*ntree);
+       void (*local_merge)(struct bNodeTree *localtree, struct bNodeTree 
*ntree);
+
+       /* Tree update. Overrides nodetype->updatetreefunc! */
+       void (*update)(struct bNodeTree *ntree);
+       /* Node update. Overrides nodetype->updatefunc! */
+       void (*update_node)(struct bNodeTree *ntree, struct bNode *node);
+       
+       int (*validate_link)(struct bNodeTree *ntree, struct bNodeLink *link);
+} bNodeTreeType;
+
 /* ************** GENERIC API, TREES *************** */
 
-void                   ntreeVerifyTypes(struct bNodeTree *ntree);
+struct bNodeTreeType *ntreeGetType(int type);
+struct bNodeType *ntreeGetNodeType(struct bNodeTree *ntree);
+struct bNodeSocketType *ntreeGetSocketType(int type);
 

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to