[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33932] branches/particles-2010/source/ blender: Big one: data node code is now in separate functions and structs, so all nodes that access scene data by RNA, ID properties, derived meshes or particle attributes can use a common set of functions and structs .

Lukas Toenne lukas.toenne at googlemail.com
Wed Dec 29 12:01:00 CET 2010


Revision: 33932
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33932
Author:   lukastoenne
Date:     2010-12-29 12:00:59 +0100 (Wed, 29 Dec 2010)

Log Message:
-----------
Big one: data node code is now in separate functions and structs, so all nodes that access scene data by RNA, ID properties, derived meshes or particle attributes can use a common set of functions and structs. Derived mesh data can be used to make mesh modifiers with node trees.

Modified Paths:
--------------
    branches/particles-2010/source/blender/blenkernel/BKE_node.h
    branches/particles-2010/source/blender/blenkernel/intern/node.c
    branches/particles-2010/source/blender/blenloader/intern/readfile.c
    branches/particles-2010/source/blender/blenloader/intern/writefile.c
    branches/particles-2010/source/blender/editors/space_node/drawnode.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/makesrna/intern/CMakeLists.txt
    branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c
    branches/particles-2010/source/blender/modifiers/intern/MOD_nodetree.c
    branches/particles-2010/source/blender/nodes/CMakeLists.txt
    branches/particles-2010/source/blender/nodes/SIM_node.h
    branches/particles-2010/source/blender/nodes/intern/SIM_intern.c
    branches/particles-2010/source/blender/nodes/intern/SIM_intern.h
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_constant.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_create_mesh_point.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_curve.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_for.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_for_group.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_mesh_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_if.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_index.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_math.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_math_rotation.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_math_vector.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_particle_dynamics.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_pass.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_program.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_random.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_subprogram.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_timestep.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_while.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodetree.c
    branches/particles-2010/source/blender/nodes/intern/SIM_util.c
    branches/particles-2010/source/blender/nodes/intern/SIM_util.h

Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/particles-2010/source/blender/blenkernel/BKE_node.h	2010-12-29 05:20:19 UTC (rev 33931)
+++ branches/particles-2010/source/blender/blenkernel/BKE_node.h	2010-12-29 11:00:59 UTC (rev 33932)
@@ -64,19 +64,15 @@
 struct Scene;
 struct Tex;
 struct uiLayout;
+struct Object;
+struct DerivedMesh;
 
+struct SimContext;
 struct SimDataContext;
 struct SimExecData;
 struct SimNodeStack;
 struct SimSocketStack;
 
-/* DEPRECATED */
-struct SimNodeInstance;
-struct SimNodeSocketInstance;
-struct SimulationContext;
-struct SimNodeThreadContext;
-struct SimNodeJob;
-
 /* ************** NODE TYPE DEFINITIONS ***** */
 
 typedef struct bNodeSocketDefinition {
@@ -128,11 +124,6 @@
 	/* list of types the node can adapt (if no custom function is used) */
 	int *adapt_types;
 
-	char socketstoragename[64];		/* socket storage struct name for DNA */
-	void (*initsocketfunc)(struct bNodeSocket *sock);
-	void (*copysocketstoragefunc)(struct bNodeSocket *from, struct bNodeSocket *to);
-	void (*freesocketstoragefunc)(struct bNodeSocket *sock);
-
 	/* simulation nodes */
 	char *(*generate_source)(struct SimNodeStack *node);
 	void (*initexec)(struct SimNodeStack *node);
@@ -613,32 +604,12 @@
 /* API */
 void ntreeSimulationCompileProgram(struct bNodeTree *ntree, int force);
 void ntreeSimulationReleaseProgram(struct bNodeTree *ntree);
-void ntreeSimulationExecTree(struct bNodeTree *ntree, struct Scene *scene, struct PointerRNA *self, float frame, float dframe, float time, float dtime);
+void ntreeSimExecTree(struct bNodeTree *ntree, struct Scene *scene, float frame, float framestep);
+void ntreeSimExecTreeModifier(struct bNodeTree *ntree, struct Scene *scene, 
+							  struct Object *ob, struct DerivedMesh *dm,
+							  float (*vertexCos)[3], int numVerts,
+							  float frame, float framestep);
 
-/* node-specific functions for UI */
-/* XXX having these here is ugly, should be in nodes directory */
-typedef int (*SimSearchFunction)(void *items, const char *str, const char *name, void *poin, int icon);
-
-void sim_getdata_add_property_socket(struct bNode *node, const char *name);
-void sim_getdata_foreach_property(struct bNodeTree *ntree, struct bNode *node, void *items, const char *str, SimSearchFunction cb);
-struct StructRNA *sim_getdata_type_get(struct bNode *node);
-void sim_getdata_type_set(struct bNodeTree *ntree, struct bNode *node, struct StructRNA *type);
-void sim_getdata_foreach_type(struct bNodeTree *ntree, struct bNode *node, void *items, const char *str, SimSearchFunction cb);
-void sim_getdata_property_types(struct bNodeSocket *sock, int **types, int *num_types);
-
-void sim_setdata_add_property_socket(struct bNode *node, const char *name);
-void sim_setdata_foreach_property(struct bNodeTree *ntree, struct bNode *node, void *items, const char *str, SimSearchFunction cb);
-struct StructRNA *sim_setdata_type_get(struct bNode *node);
-void sim_setdata_type_set(struct bNodeTree *ntree, struct bNode *node, struct StructRNA *type);
-void sim_setdata_foreach_type(struct bNodeTree *ntree, struct bNode *node, void *items, const char *str, SimSearchFunction cb);
-void sim_setdata_property_types(struct bNodeSocket *sock, int **types, int *num_types);
-
-void sim_getmeshdata_add_property_socket(struct bNode *node, const char *name);
-void sim_getmeshdata_foreach_property(struct bNodeTree *ntree, struct bNode *node, void *items, const char *str, SimSearchFunction cb);
-
-void sim_fromquaternion_update_rotation_mode(struct bNodeTree *ntree, struct bNode *node);
-void sim_toquaternion_update_rotation_mode(struct bNodeTree *ntree, struct bNode *node);
-
 /**/
 
 void init_nodesystem(void);

Modified: branches/particles-2010/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/particles-2010/source/blender/blenkernel/intern/node.c	2010-12-29 05:20:19 UTC (rev 33931)
+++ branches/particles-2010/source/blender/blenkernel/intern/node.c	2010-12-29 11:00:59 UTC (rev 33932)
@@ -171,9 +171,6 @@
 	sock->ns.imin = (int)min;
 	sock->ns.imax = (int)max;
 	
-	if (ntype->initsocketfunc)
-		ntype->initsocketfunc(sock);
-	
 	return sock;
 }
 
@@ -207,9 +204,6 @@
 {
 	bNodeLink *link, *next;
 	
-	if (node->typeinfo->freesocketstoragefunc)
-		node->typeinfo->freesocketstoragefunc(sock);
-	
 	for(link= ntree->links.first; link; link= next) {
 		next= link->next;
 		if(link->tosock==sock) {
@@ -224,9 +218,6 @@
 {
 	bNodeLink *link, *next;
 	
-	if (node->typeinfo->freesocketstoragefunc)
-		node->typeinfo->freesocketstoragefunc(sock);
-	
 	for(link= ntree->links.first; link; link= next) {
 		next= link->next;
 		if(link->fromsock==sock) {
@@ -242,13 +233,6 @@
 	bNodeLink *link, *next;
 	bNodeSocket *sock;
 	
-	if (node->typeinfo->freesocketstoragefunc) {
-		for (sock=node->inputs.first; sock; sock = sock->next)
-			node->typeinfo->freesocketstoragefunc(sock);
-		for (sock=node->outputs.first; sock; sock = sock->next)
-			node->typeinfo->freesocketstoragefunc(sock);
-	}
-	
 	for(link= ntree->links.first; link; link= next) {
 		next= link->next;
 		if(link->fromnode==node || link->tonode==node) {
@@ -1229,9 +1213,6 @@
 		if(internal)
 			sock->own_index= 0;
 		
-		if (node->typeinfo->copysocketstoragefunc)
-			node->typeinfo->copysocketstoragefunc(oldsock, sock);
-		
 		if (sock->panel)
 			sock->panel = sock->panel->new_panel;
 	}
@@ -1243,9 +1224,6 @@
 		if(internal)
 			sock->own_index= 0;
 		
-		if (node->typeinfo->copysocketstoragefunc)
-			node->typeinfo->copysocketstoragefunc(oldsock, sock);
-		
 		if (sock->panel)
 			sock->panel = sock->panel->new_panel;
 	}
@@ -1574,16 +1552,10 @@
 	if (treetype->freeNodeCache)
 		treetype->freeNodeCache(ntree, node);
 	for (sock=node->inputs.first; sock; sock = nextsock) {
-		if (node->typeinfo->freesocketstoragefunc && sock->storage)
-			node->typeinfo->freesocketstoragefunc(sock);
-		
 		nextsock = sock->next;
 		MEM_freeN(sock);
 	}
 	for (sock=node->outputs.first; sock; sock = nextsock) {
-		if (node->typeinfo->freesocketstoragefunc && sock->storage)
-			node->typeinfo->freesocketstoragefunc(sock);
-		
 		nextsock = sock->next;
 		MEM_freeN(sock);
 	}
@@ -2565,11 +2537,9 @@
 		if(ntype->type==NODE_DYNAMIC && ntype->id!=NULL) {
 			BLI_remlink(list, ntype);
 			if(ntype->inputs) {
-				bNodeSocketDefinition *sockdef= ntype->inputs;
 				MEM_freeN(ntype->inputs);
 			}
 			if(ntype->outputs) {
-				bNodeSocketDefinition *sockdef= ntype->outputs;
 				MEM_freeN(ntype->outputs);
 			}
 			if(ntype->name) {

Modified: branches/particles-2010/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/readfile.c	2010-12-29 05:20:19 UTC (rev 33931)
+++ branches/particles-2010/source/blender/blenloader/intern/readfile.c	2010-12-29 11:00:59 UTC (rev 33932)
@@ -2068,11 +2068,11 @@
 	SimDataNode *data= (SimDataNode*)node->storage;
 
 	/* restore the identifier string */
-	data->save_type = newdataadr(fd, (void*)data->save_type);
-	data->type = RNA_find_struct(data->save_type);
-	if (data->save_type) {
-		MEM_freeN((void*)data->save_type);
-		data->save_type = NULL;
+	data->save_srna = newdataadr(fd, (void*)data->save_srna);
+	data->srna = RNA_find_struct(data->save_srna);
+	if (data->save_srna) {
+		MEM_freeN((void*)data->save_srna);
+		data->save_srna = NULL;
 	}
 }
 
@@ -2124,7 +2124,6 @@
 				   || node->type==SIM_NODE_SETDATA
 				   || node->type==SIM_NODE_GETMESHDATA
 				   || node->type==SIM_NODE_CREATEMESHPOINT
-				   || node->type==SIM_NODE_CURVE
 				   || node->type==SIM_NODE_FORGROUP
 				   || node->type==SIM_NODE_INDEX
 				   || node->type==SIM_NODE_ADDPARTICLE

Modified: branches/particles-2010/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/writefile.c	2010-12-29 05:20:19 UTC (rev 33931)
+++ branches/particles-2010/source/blender/blenloader/intern/writefile.c	2010-12-29 11:00:59 UTC (rev 33932)
@@ -643,10 +643,10 @@
 static void write_sim_data_node(WriteData *wd, SimDataNode *data)
 {
 	writestruct(wd, DATA, "SimDataNode", 1, data);
-	if (data->type) {
+	if (data->srna) {
 		/* save identifier string, to allow restoring the StructRNA pointer */
-		data->save_type= RNA_struct_identifier(data->type);
-		writedata(wd, DATA, strlen(data->save_type)+1, (void*)data->save_type);
+		data->save_srna= RNA_struct_identifier(data->srna);
+		writedata(wd, DATA, strlen(data->save_srna)+1, (void*)data->save_srna);
 	}
 }
 
@@ -668,13 +668,9 @@
 	for(node= ntree->nodes.first; node; node= node->next) {
 		for(sock= node->inputs.first; sock; sock= sock->next) {
 			writestruct(wd, DATA, "bNodeSocket", 1, sock);
-			if (sock->storage)
-				writestruct(wd, DATA, node->typeinfo->socketstoragename, 1, sock->storage);
 		}
 		for(sock= node->outputs.first; sock; sock= sock->next) {
 			writestruct(wd, DATA, "bNodeSocket", 1, sock);
-			if (sock->storage)
-				writestruct(wd, DATA, node->typeinfo->socketstoragename, 1, sock->storage);
 		}
 		
 		for(panel=node->inpanels.first; panel; panel = panel->next)
@@ -695,7 +691,6 @@
 				   || node->type==SIM_NODE_SETDATA
 				   || node->type==SIM_NODE_GETMESHDATA
 				   || node->type==SIM_NODE_CREATEMESHPOINT
-				   || node->type==SIM_NODE_CURVE
 				   || node->type==SIM_NODE_FORGROUP
 				   || node->type==SIM_NODE_INDEX
 				   || node->type==SIM_NODE_ADDPARTICLE

Modified: branches/particles-2010/source/blender/editors/space_node/drawnode.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/drawnode.c	2010-12-29 05:20:19 UTC (rev 33931)
+++ branches/particles-2010/source/blender/editors/space_node/drawnode.c	2010-12-29 11:00:59 UTC (rev 33932)
@@ -49,6 +49,7 @@
 
 #include "CMP_node.h"
 #include "SHD_node.h"
+#include "SIM_node.h"
 
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
@@ -1308,6 +1309,7 @@
 	bNodeTree *ntree;
 	bNode *node;
 	bNodeSocket *sock;
+	int in_out;
 } NodeDataArgs;
 
 /* Property socket type selection box */
@@ -1322,28 +1324,21 @@
 	
 	snode_notify(C, snode);
 }
+static void node_data_property_foreach_type_cb(void *layout_v, const char *name, int icon, int argval)
+{
+	uiItemV((uiLayout *)layout_v, name, icon, argval);
+}

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list