[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36468] branches/particles-2010/source/ blender: Temporary switch to a cleaned version for trunk merge.
Lukas Toenne
lukas.toenne at googlemail.com
Tue May 3 20:39:32 CEST 2011
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. @@
More information about the Bf-blender-cvs
mailing list