Revision: 31261
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31261
Author:   lukastoenne
Date:     2010-08-11 19:40:43 +0200 (Wed, 11 Aug 2010)

Log Message:
-----------
Fixed a bug in output streams causing the fill value get too high.

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_add_particle.c
    branches/particles-2010/source/blender/nodes/intern/SIM_util.c

Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/particles-2010/source/blender/blenkernel/BKE_node.h        
2010-08-11 17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/blenkernel/BKE_node.h        
2010-08-11 17:40:43 UTC (rev 31261)
@@ -523,6 +523,7 @@
 #define SIM_NODE_SETOBJECTDATA         752
 #define SIM_NODE_GETVERTEXDATA         753
 #define SIM_NODE_SETVERTEXDATA         754
+#define SIM_NODE_ADDPARTICLE           755
 
 /* 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-11 17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/blenkernel/intern/node.c     
2010-08-11 17:40:43 UTC (rev 31261)
@@ -2846,6 +2846,7 @@
        nodeRegisterType(ntypelist, &sim_node_setobjectdata);
        nodeRegisterType(ntypelist, &sim_node_getvertexdata);
        nodeRegisterType(ntypelist, &sim_node_setvertexdata);
+       nodeRegisterType(ntypelist, &sim_node_addparticle);
 
        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-11 17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/editors/space_node/drawnode.c        
2010-08-11 17:40:43 UTC (rev 31261)
@@ -1297,6 +1297,15 @@
        uiItemR(col, ptr, "object", 0, NULL, 0);
 }
 
+static void node_simulation_buts_addparticle(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)
 {
@@ -1313,6 +1322,9 @@
        case SIM_NODE_SETVERTEXDATA:
                ntype->uifunc = node_simulation_buts_setvertexdata;
                break;
+       case SIM_NODE_ADDPARTICLE:
+               ntype->uifunc = node_simulation_buts_addparticle;
+               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-11 17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_nodetree.c       
2010-08-11 17:40:43 UTC (rev 31261)
@@ -2122,6 +2122,18 @@
        RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
 }
 
+static void def_sim_addparticle(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-11 17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h 
2010-08-11 17:40:43 UTC (rev 31261)
@@ -161,5 +161,6 @@
 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_ADDPARTICLE,    def_sim_addparticle,    
"ADDPARTICLE",    AddParticle,      "Add Particle",      ""              )
 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-11 
17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/nodes/SIM_node.h     2010-08-11 
17:40:43 UTC (rev 31261)
@@ -69,6 +69,7 @@
 extern bNodeType sim_node_setobjectdata;
 extern bNodeType sim_node_getvertexdata;
 extern bNodeType sim_node_setvertexdata;
+extern bNodeType sim_node_addparticle;
 
 extern bNodeType sim_node_debugprint;
 

Modified: 
branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c
===================================================================
--- 
branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c
    2010-08-11 17:37:22 UTC (rev 31260)
+++ 
branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle.c
    2010-08-11 17:40:43 UTC (rev 31261)
@@ -26,35 +26,52 @@
 
 */
 
-#if 0
 #include "../SIM_util.h"
 
 #include "DNA_object_types.h"
-#include "DNA_mesh_types.h"
-#include "DNA_meshdata_types.h"
+#include "DNA_particleset_types.h"
 
+#include "BKE_particleset.h"
+
 #include "RNA_access.h"
 
-/* **************** Get mesh vertex data ******************** */
+/* **************** Create a new particle ******************** */
 
 static bNodeSocketType inputs[]= { 
+       { SOCK_OP, 1, "OnCreate", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f },
        { -1, 0, "" }
 };
 
 static bNodeSocketType outputs[]= { 
-       { SOCK_VECTOR, 0, "Position", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 
NDC_VERTEX },
+       { SOCK_OP, 0, "Exec", 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f },
        { -1, 0, "" }
 };
 
 static int exec(SimNodeThreadContext *ctx, SimNodeJob *job)
 {
+       
+       
        return NODE_EXEC_FINISHED;
 }
 
-bNodeType sim_node_getvertexdata= {
+static int opexec(SimNodeThreadContext *ctx, bNode *node, int level, int 
*r_opsock)
+{
+       SimNodeDataStream ostream[1];
+       Object *ob = (Object*)node->id;
+       
+       if (ob && ob->type == OB_PSET) {
+               ParticleSet *pset = (ParticleSet*)ob->data;
+               
+               pset_create_particles(pset, ctx->sim->cfra, 1);
+               *r_opsock = 0;
+       }
+       return NODE_EXEC_FINISHED;
+}
+
+bNodeType sim_node_addparticle= {
        /* *next,*prev     */   NULL, NULL,
-       /* type code       */   SIM_NODE_GETVERTEXDATA,
-       /* name            */   "GetVertexData",
+       /* type code       */   SIM_NODE_ADDPARTICLE,
+       /* name            */   "AddParticle",
        /* width+range     */   140, 100, 320,
        /* class+opts      */   NODE_CLASS_SIMULATION, NODE_OPTIONS,
        /* input sock      */   inputs,
@@ -69,6 +86,5 @@
        /* pynode, pydict  */   NULL, NULL,
        /* gpufunc         */   NULL,
        /* sim_exec        */   exec,
-       /* sim_opexec      */   NULL
+       /* sim_opexec      */   opexec
 };
-#endif

Modified: branches/particles-2010/source/blender/nodes/intern/SIM_util.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_util.c      
2010-08-11 17:37:22 UTC (rev 31260)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_util.c      
2010-08-11 17:40:43 UTC (rev 31261)
@@ -230,7 +230,8 @@
        batch->filter = NULL;
        batch->flag = NODE_DATA_EXTERNAL;       /* using bNodeSocket members */
        batch->start = 0;
-       batch->fill = batch->totdata = 1;
+       batch->totdata = 1;
+       batch->fill = 0;
        batch->branches_done = 0; /* not used */
 }
 
@@ -374,9 +375,6 @@
                else {
                        sim_init_collection_batch(stream->batch, 
stream->sock->datatype, start, ctx->sim->ntmd->batchsize, 0);
                        stream->valid = (stream->batch->totdata > 0);
-                       if (stream->valid) {
-                               ++stream->batch->fill;
-                       }
                }
                stream->datasize = sim_get_data_size(stream->sock->datatype);
                stream->current = 0;
@@ -412,12 +410,12 @@
        int i, total=stream->total, valid = 1;
        for (i=0; i < total; ++i, ++stream) {
                ++stream->current;
+               ++stream->batch->fill;
                stream->valid = (stream->valid && stream->current < 
stream->batch->totdata);
                if (stream->valid) {
                        stream->data = (char*)stream->data + stream->datasize;
                        if (stream->filter)
                                ++stream->filter;
-                       ++stream->batch->fill;
                }
                else {
                        valid = 0;


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

Reply via email to