[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31138] branches/particles-2010/source/ blender: Output data from nodes creates new jobs on linked nodes.
Lukas Toenne
lukas.toenne at googlemail.com
Sat Aug 7 10:22:03 CEST 2010
Revision: 31138
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31138
Author: lukastoenne
Date: 2010-08-07 10:22:03 +0200 (Sat, 07 Aug 2010)
Log Message:
-----------
Output data from nodes creates new jobs on linked nodes. Added a new node for setting vertex positions. This does not (yet) use the derived mesh system.
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/editors/space_node/drawnode.c
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/nodes/SIM_node.h
branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c
branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_vertex_data.c
branches/particles-2010/source/blender/nodes/intern/SIM_util.c
branches/particles-2010/source/blender/nodes/intern/SIM_util.h
branches/particles-2010/source/blender/nodes/intern/node_tree_simulation.c
Added Paths:
-----------
branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_vertex_data.c
Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/particles-2010/source/blender/blenkernel/BKE_node.h 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/blenkernel/BKE_node.h 2010-08-07 08:22:03 UTC (rev 31138)
@@ -522,6 +522,7 @@
#define SIM_NODE_GETOBJECTDATA 751
#define SIM_NODE_SETOBJECTDATA 752
#define SIM_NODE_GETVERTEXDATA 753
+#define SIM_NODE_SETVERTEXDATA 754
/* TO BE REMOVED: debugging stuff, testing, etc. */
#define SIM_NODE_DEBUGPRINT 801
Modified: branches/particles-2010/source/blender/blenkernel/intern/node.c
===================================================================
--- branches/particles-2010/source/blender/blenkernel/intern/node.c 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/blenkernel/intern/node.c 2010-08-07 08:22:03 UTC (rev 31138)
@@ -2656,6 +2656,7 @@
nodeRegisterType(ntypelist, &sim_node_getobjectdata);
nodeRegisterType(ntypelist, &sim_node_setobjectdata);
nodeRegisterType(ntypelist, &sim_node_getvertexdata);
+ nodeRegisterType(ntypelist, &sim_node_setvertexdata);
nodeRegisterType(ntypelist, &sim_node_debugprint);
}
Modified: branches/particles-2010/source/blender/editors/space_node/drawnode.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/drawnode.c 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/editors/space_node/drawnode.c 2010-08-07 08:22:03 UTC (rev 31138)
@@ -1288,6 +1288,15 @@
uiItemR(col, ptr, "object", 0, NULL, 0);
}
+static void node_simulation_buts_setvertexdata(uiLayout *layout, bContext *C, PointerRNA *ptr)
+{
+// bNode *node= ptr->data;
+ uiLayout *col;
+
+ col= uiLayoutColumn(layout, 0);
+ uiItemR(col, ptr, "object", 0, NULL, 0);
+}
+
/* only once called */
static void node_simulation_set_butfunc(bNodeType *ntype)
{
@@ -1301,6 +1310,9 @@
case SIM_NODE_GETVERTEXDATA:
ntype->uifunc = node_simulation_buts_getvertexdata;
break;
+ case SIM_NODE_SETVERTEXDATA:
+ ntype->uifunc = node_simulation_buts_setvertexdata;
+ break;
default:
ntype->uifunc= NULL;
Modified: branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c 2010-08-07 08:22:03 UTC (rev 31138)
@@ -2110,6 +2110,18 @@
// RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_get_vertex_data_update");
}
+static void def_sim_setvertexdata(StructRNA *srna)
+{
+ PropertyRNA *prop;
+
+ prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "id");
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Object", "");
+ RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+}
+
/* -------------------------------------------------------------------------- */
static EnumPropertyItem shader_node_type_items[MaxNodes];
Modified: branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h
===================================================================
--- branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h 2010-08-07 08:22:03 UTC (rev 31138)
@@ -160,5 +160,6 @@
DefNode( SimulationNode, SIM_NODE_GETOBJECTDATA, def_sim_getobjectdata, "GETOBJECTDATA", GetObjectData, "Get Object Data", "" )
DefNode( SimulationNode, SIM_NODE_SETOBJECTDATA, def_sim_setobjectdata, "SETOBJECTDATA", SetObjectData, "Set Object Data", "" )
DefNode( SimulationNode, SIM_NODE_GETVERTEXDATA, def_sim_getvertexdata, "GETVERTEXDATA", GetVertexData, "Get Vertex Data", "" )
+DefNode( SimulationNode, SIM_NODE_SETVERTEXDATA, def_sim_setvertexdata, "SETVERTEXDATA", SetVertexData, "Set Vertex Data", "" )
DefNode( SimulationNode, SIM_NODE_TIMESTEP, 0, "TIMESTEP", TimeStep, "Time Step", "" )
DefNode( SimulationNode, SIM_NODE_DEBUGPRINT, 0, "DEBUGPRINT", DebugPrint, "Debug Print", "" )
Modified: branches/particles-2010/source/blender/nodes/SIM_node.h
===================================================================
--- branches/particles-2010/source/blender/nodes/SIM_node.h 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/nodes/SIM_node.h 2010-08-07 08:22:03 UTC (rev 31138)
@@ -68,6 +68,7 @@
extern bNodeType sim_node_getobjectdata;
extern bNodeType sim_node_setobjectdata;
extern bNodeType sim_node_getvertexdata;
+extern bNodeType sim_node_setvertexdata;
extern bNodeType sim_node_debugprint;
Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_debugprint.c 2010-08-07 08:22:03 UTC (rev 31138)
@@ -31,50 +31,63 @@
/* **************** Debug printing ******************** */
static bNodeSocketType inputs[]= {
- { SOCK_ANY, 1, "Value", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f },
+ { SOCK_ANY, 1, "In", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1000000.0f },
{ -1, 0, "" }
};
static bNodeSocketType outputs[]= {
- { SOCK_OP, 0, "Exec", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f },
+ { SOCK_ANY, 0, "Out", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f },
{ -1, 0, "" }
};
-static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
+static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
{
-#if 0
-// SimulationContext *sim= (SimulationContext*)data;
- float *vec;
-
- printf("DEBUG: ");
- switch (in[0]->sockettype) {
- case SOCK_OP:
- if (in[0]->ctx.node)
- printf("Operator Node '%s'", in[0]->ctx.node->name);
- break;
- case SOCK_INT:
- printf("Integer %d", sim_get_int(in[0]));
- break;
- case SOCK_BOOL:
- if (sim_get_bool(in[0]))
- printf("Boolean True");
- else
- printf("Boolean False");
- break;
- case SOCK_FLOAT:
- printf("Float %f", sim_get_float(in[0]));
- break;
- case SOCK_VECTOR:
- vec = sim_get_vector(in[0]);
- printf("Vector (%f, %f, %f)", vec[0], vec[1], vec[2]);
- break;
- case SOCK_RGBA:
- vec = sim_get_rgba(in[0]);
- printf("RGBA (%f, %f, %f, %f)", vec[0], vec[1], vec[2], vec[3]);
- break;
+ SimNodeDataStream istream[1];
+ SimNodeDataStream ostream[1];
+ int i, valid;
+ int ival;
+ char cval;
+ float fval, *vval;
+
+ if (job->execlevel == 0)
+ printf("Debug print (node '%s', level %d)\n", job->node->node->name, job->execlevel);
+ valid = (sim_istream_init(istream, ctx, job) && sim_ostream_init(ostream, ctx, job, job->input_start));
+ for (i=0; valid; ++i) {
+ printf("Element %d: ", i);
+ switch (job->node->inputs[0]->datatype) {
+ case SOCK_FLOAT:
+ fval = sim_istream_read_float(istream, 0);
+ printf("%f", fval);
+ sim_ostream_write_float(ostream, 0, fval);
+ break;
+ case SOCK_INT:
+ ival = sim_istream_read_int(istream, 0);
+ printf("%d", ival);
+ sim_ostream_write_int(ostream, 0, ival);
+ break;
+ case SOCK_BOOL:
+ cval = sim_istream_read_bool(istream, 0);
+ printf("%f", fval);
+ sim_ostream_write_bool(ostream, 0, cval);
+ break;
+ case SOCK_VECTOR:
+ vval = sim_istream_read_vector(istream, 0);
+ printf("(%f, %f, %f)", vval[0], vval[1], vval[2]);
+ sim_ostream_write_vector(ostream, 0, vval);
+ break;
+ case SOCK_RGBA:
+ vval = sim_istream_read_rgba(istream, 0);
+ printf("[%f, %f, %f, %f]", vval[0], vval[1], vval[2], vval[3]);
+ sim_ostream_write_rgba(ostream, 0, vval);
+ break;
+ }
+ valid = sim_istream_next(istream) && sim_ostream_next(ostream);
+ printf("\n");
}
- printf("\n");
-#endif
+ sim_istream_close(istream, ctx);
+ sim_ostream_close(ostream, ctx, job);
+ job->storage1 = i; /* starting point when resuming */
+ return NODE_EXEC_FINISHED;
}
bNodeType sim_node_debugprint= {
@@ -86,10 +99,14 @@
/* input sock */ inputs,
/* output sock */ outputs,
/* storage */ "",
- /* execfunc */ exec,
+ /* execfunc */ NULL,
/* butfunc */ NULL,
/* initfunc */ NULL,
/* freestoragefunc */ NULL,
/* copysotragefunc */ NULL,
- /* id */ NULL
+ /* id */ NULL,
+ /* pynode, pydict */ NULL, NULL,
+ /* gpufunc */ NULL,
+ /* sim_exec */ exec,
+ /* sim_opexec */ NULL
};
Modified: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_vertex_data.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_vertex_data.c 2010-08-07 06:17:35 UTC (rev 31137)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_get_vertex_data.c 2010-08-07 08:22:03 UTC (rev 31138)
@@ -45,21 +45,9 @@
{ -1, 0, "" }
};
-//static void exec(void *data, bNode *node, bNodeStack **in, bNodeStack **out)
-//{
-// bNodeSocket *out_pos = node->outputs.first;
-// SimulationContext *sim= (SimulationContext*)data;
-// Object *ob = (Object*)node->id;
-
-// if (ob && ob->type == OB_MESH) {
-// Mesh *mesh = (Mesh*)ob->data;
-
-// }
-//}
-
-int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
+static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
{
- SimNodeDataStream ostream[2];
+ SimNodeDataStream ostream[1];
Object *ob = (Object*)job->node->node->id;
if (ob && ob->type == OB_MESH) {
@@ -68,16 +56,19 @@
if (mesh->totvert > 0) {
int i, valid;
- valid = sim_ostream_init(ostream, ctx, job);
- for (i=0; valid && i < mesh->totvert; ++i) {
+ if (job->execlevel == 0)
+ job->storage1 = 0;
+ valid = sim_ostream_init(ostream, ctx, job, job->storage1);
+ for (i=job->storage1; valid && i < mesh->totvert; ++i) {
sim_ostream_write_vector(ostream, 0, mesh->mvert[i].co);
valid = sim_ostream_next(ostream);
}
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list