[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