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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to