Revision: 36468 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36468 Author: lukastoenne Date: 2011-05-03 18:39:32 +0000 (Tue, 03 May 2011) Log Message: ----------- Temporary switch to a cleaned version for trunk merge. All actual new nodes and tree types have been removed as well as experimental features.
Modified Paths: -------------- branches/particles-2010/source/blender/blenkernel/BKE_node.h branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c branches/particles-2010/source/blender/blenkernel/intern/node.c branches/particles-2010/source/blender/blenloader/intern/readfile.c branches/particles-2010/source/blender/editors/space_node/drawnode.c branches/particles-2010/source/blender/editors/space_node/node_draw.c branches/particles-2010/source/blender/editors/space_node/node_edit.c branches/particles-2010/source/blender/editors/space_node/node_header.c branches/particles-2010/source/blender/makesdna/DNA_node_types.h branches/particles-2010/source/blender/makesdna/DNA_object_types.h branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h branches/particles-2010/source/blender/makesrna/intern/rna_object.c branches/particles-2010/source/blender/nodes/CMakeLists.txt branches/particles-2010/source/blender/nodes/intern/node_exec.c branches/particles-2010/source/blender/nodes/intern/node_exec.h branches/particles-2010/source/blender/nodes/intern/node_socket.c branches/particles-2010/source/blender/nodes/intern/node_socket.h Removed Paths: ------------- branches/particles-2010/source/blender/nodes/MOD_node.h branches/particles-2010/source/blender/nodes/PAR_node.h branches/particles-2010/source/blender/nodes/intern/MOD_exec.c branches/particles-2010/source/blender/nodes/intern/MOD_exec.h branches/particles-2010/source/blender/nodes/intern/MOD_nodes/ branches/particles-2010/source/blender/nodes/intern/MOD_nodetree.c branches/particles-2010/source/blender/nodes/intern/MOD_util.c branches/particles-2010/source/blender/nodes/intern/MOD_util.h branches/particles-2010/source/blender/nodes/intern/PAR_nodetree.c Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h =================================================================== --- branches/particles-2010/source/blender/blenkernel/BKE_node.h 2011-05-03 18:31:01 UTC (rev 36467) +++ branches/particles-2010/source/blender/blenkernel/BKE_node.h 2011-05-03 18:39:32 UTC (rev 36468) @@ -81,7 +81,14 @@ /* ************** NODE TYPE DEFINITIONS ***** */ -/* Compact definition of a static node socket */ +/** 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; char name[32]; @@ -96,9 +103,11 @@ 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); -/* visitor function for socket converters */ -typedef void (*SocketConvWalkFunc)(void *userdata, int converter, const char *name); +typedef void (*NodeSocketConverterWalkFunction)(void *userdata, int type, const char *name); +/** Defines a socket type. + * Defines the appearance and behavior of a socket in the UI. + */ typedef struct bNodeSocketType { int type; char ui_name[32]; @@ -110,18 +119,12 @@ int value_structsize; NodeSocketButtonFunction buttonfunc; - - void (*foreach_converter)(void *userdata, int type, SocketConvWalkFunc cb); - - /* functions for sources of this type */ - void *(*source_read)(struct bNodeDataSource *source, int key); - void (*source_write)(struct bNodeDataSource *source, int key, void *data); - /* get function pointers for readers of this type */ - void (*make_reader_buffer)(struct bNodeDataReader *reader, int converter); - void (*make_reader_delegate)(struct bNodeDataReader *reader, int converter); - int (*reader_size)(struct bNodeDataReader *reader); + void (*foreach_converter)(void *userdata, int type, NodeSocketConverterWalkFunction cb); } bNodeSocketType; +/** Template for creating a node. + * Stored required parameters to make a new node of a specific type. + */ typedef struct bNodeTemplate { int type; @@ -129,6 +132,10 @@ 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 */ @@ -144,33 +151,41 @@ char storagename[64]; /* struct name for DNA */ - /* this line is set on startup of blender */ - /* basic drawing */ + /// 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); - /* node options ui */ + /// Draw the option buttons on the node. void (*uifunc)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr); - /* detail buttons on panel */ + /// Additional parameters in the side panel. void (*buttonfunc)(struct uiLayout *, struct bContext *C, struct PointerRNA *ptr); + /// Optional custom label function for the node header. const char *(*labelfunc)(struct bNode *); + /// Optional custom resize handle polling. int (*resize_area_func)(struct bNode *node, int x, int y); - /* called when the node is updated (e.g. linked) in the editor. */ + /// Called when the node is updated in the editor. void (*updatefunc)(struct bNodeTree *ntree, struct bNode *node); - /* verify when internal ID data has changed */ + /// 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); - struct bNodeTemplate (*templatefunc)(struct bNode *); + /// 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); - /* Tree functions: These are called on node trees associated to this node type. - * No actual instance of a node needs to exist! - */ + /// 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 */ @@ -338,7 +353,6 @@ struct bNodeLink *nodeAddLink(struct bNodeTree *ntree, struct bNode *fromnode, struct bNodeSocket *fromsock, struct bNode *tonode, struct bNodeSocket *tosock); void nodeRemLink(struct bNodeTree *ntree, struct bNodeLink *link); void nodeRemSocketLinks(struct bNodeTree *ntree, struct bNodeSocket *sock); -void nodeInitLinkConverter(struct bNodeLink *link); void nodeSpaceCoords(struct bNode *node, float *locx, float *locy); void nodeAttachNode(struct bNode *node, struct bNode *parent); @@ -656,28 +670,6 @@ char* ntreeTexOutputMenu(struct bNodeTree *ntree); -/* ************** MODIFIER NODES *************** */ - -/* input */ -#define MOD_NODE_MESH 1000 -#define MOD_NODE_VERTEXGROUP 1001 - -/* transform */ -#define MOD_NODE_TRANSFORM 1100 - -/* combine */ -#define MOD_NODE_JOIN 1200 -#define MOD_NODE_MORPH 1201 - -/* API */ -struct DerivedMesh *ntreeModifierExecTree(struct bNodeTree *ntree, struct Scene *scene, struct Object *ob, float (*inputVertexCos)[3]); - - -/* ************** PARTICLE NODES *************** */ - -void ntreeParticleExecTree(struct bNodeTree *ntree, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys); - - /*************************************************/ void init_nodesystem(void); Modified: branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c =================================================================== --- branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c 2011-05-03 18:31:01 UTC (rev 36467) +++ branches/particles-2010/source/blender/blenkernel/intern/DerivedMesh.c 2011-05-03 18:39:32 UTC (rev 36468) @@ -1686,290 +1686,268 @@ modifiers_clearErrors(ob); - if (ob->modifier_nodetree) { - if(useDeform) { - if (deform_r) - *deform_r = CDDM_from_mesh(me, ob); - } - - dm = ntreeModifierExecTree(ob->modifier_nodetree, scene, ob, inputVertexCos); - - if (dm) { - numVerts = dm->getNumVerts(dm); - deformedVerts = MEM_mallocN(sizeof(*deformedVerts) * numVerts, "dfmv"); - dm->getVertCos(dm, deformedVerts); - } - else { - if(inputVertexCos) - deformedVerts = inputVertexCos; - else - deformedVerts = mesh_getVertexCos(me, &numVerts); - } + if(!skipVirtualArmature) { + firstmd = modifiers_getVirtualModifierList(ob); } else { - if(!skipVirtualArmature) { - firstmd = modifiers_getVirtualModifierList(ob); - } - else { - /* game engine exception */ - firstmd = ob->modifiers.first; - if(firstmd && firstmd->type == eModifierType_Armature) - firstmd = firstmd->next; - } - - md = firstmd; + /* game engine exception */ + firstmd = ob->modifiers.first; + if(firstmd && firstmd->type == eModifierType_Armature) + firstmd = firstmd->next; + } + + md = firstmd; + + if(useRenderParams) required_mode = eModifierMode_Render; + else required_mode = eModifierMode_Realtime; + + datamasks = modifiers_calcDataMasks(scene, ob, md, dataMask, required_mode); + curr = datamasks; + + if(deform_r) *deform_r = NULL; + *final_r = NULL; + + if(useDeform) { + if(inputVertexCos) + deformedVerts = inputVertexCos; - if(useRenderParams) required_mode = eModifierMode_Render; - else required_mode = eModifierMode_Realtime; - - datamasks = modifiers_calcDataMasks(scene, ob, md, dataMask, required_mode); - curr = datamasks; - - if(deform_r) *deform_r = NULL; - *final_r = NULL; - - if(useDeform) { - if(inputVertexCos) - deformedVerts = inputVertexCos; + /* Apply all leading deforming modifiers */ + for(;md; md = md->next, curr = curr->next) { + ModifierTypeInfo *mti = modifierType_getInfo(md->type); - /* Apply all leading deforming modifiers */ - for(;md; md = md->next, curr = curr->next) { - ModifierTypeInfo *mti = modifierType_getInfo(md->type); + md->scene= scene; + + if(!modifier_isEnabled(scene, md, required_mode)) continue; + if(useDeform < 0 && mti->dependsOnTime && mti->dependsOnTime(md)) continue; + + if(mti->type == eModifierTypeType_OnlyDeform) { + if(!deformedVerts) + deformedVerts = mesh_getVertexCos(me, &numVerts); - md->scene= scene; - - if(!modifier_isEnabled(scene, md, required_mode)) continue; - if(useDeform < 0 && mti->dependsOnTime && mti->dependsOnTime(md)) continue; - - if(mti->type == eModifierTypeType_OnlyDeform) { - if(!deformedVerts) - deformedVerts = mesh_getVertexCos(me, &numVerts); - - mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, useRenderParams, useDeform); - } else { - break; - } - - /* grab modifiers until index i */ - if((index >= 0) && (modifiers_indexInObject(ob, md) >= index)) - break; + mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, useRenderParams, useDeform); + } else { + break; } - /* Result of all leading deforming modifiers is cached for + /* grab modifiers until index i */ + if((index >= 0) && (modifiers_indexInObject(ob, md) >= index)) + break; + } + + /* Result of all leading deforming modifiers is cached for * places that wish to use the original mesh but with deformed * coordinates (vpaint, etc.) */ - if (deform_r) { @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs