[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31507] branches/particles-2010/source/ blender: Fixed writefile bug, particle data writing used sizeof(NParticle) instead of pset->particle_size, which does not contain all the dynamic properties.

Lukas Toenne lukas.toenne at googlemail.com
Sat Aug 21 22:11:45 CEST 2010


Revision: 31507
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31507
Author:   lukastoenne
Date:     2010-08-21 22:11:45 +0200 (Sat, 21 Aug 2010)

Log Message:
-----------
Fixed writefile bug, particle data writing used sizeof(NParticle) instead of pset->particle_size, which does not contain all the dynamic properties.
Added a AddParticleForce node that makes it easier to accumulate independent forces.

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_view3d/drawobject.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_get_particle_data.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_particle_dynamics.c
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_set_particle_data.c

Added Paths:
-----------
    branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c

Modified: branches/particles-2010/source/blender/blenkernel/BKE_node.h
===================================================================
--- branches/particles-2010/source/blender/blenkernel/BKE_node.h	2010-08-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/blenkernel/BKE_node.h	2010-08-21 20:11:45 UTC (rev 31507)
@@ -540,6 +540,7 @@
 #define SIM_NODE_SETPARTICLEDATA	757
 #define SIM_NODE_RANDOM				758
 #define SIM_NODE_PARTICLEDYNAMICS	759
+#define SIM_NODE_ADDPARTICLEFORCE	760
 
 /* 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-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/blenkernel/intern/node.c	2010-08-21 20:11:45 UTC (rev 31507)
@@ -2964,6 +2964,7 @@
 	nodeRegisterType(ntypelist, &sim_node_setparticledata);
 	nodeRegisterType(ntypelist, &sim_node_random);
 	nodeRegisterType(ntypelist, &sim_node_particledynamics);
+	nodeRegisterType(ntypelist, &sim_node_addparticleforce);
 
 	nodeRegisterType(ntypelist, &sim_node_debugprint);
 }

Modified: branches/particles-2010/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/readfile.c	2010-08-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/blenloader/intern/readfile.c	2010-08-21 20:11:45 UTC (rev 31507)
@@ -3162,46 +3162,6 @@
 		if(pset->id.flag & LIB_NEEDLINK) {
 			if (pset->adt) lib_link_animdata(fd, &pset->id, pset->adt);
 			
-			#if 0
-			part->dup_ob = newlibadr(fd, part->id.lib, part->dup_ob);
-			part->dup_group = newlibadr(fd, part->id.lib, part->dup_group);
-			part->eff_group = newlibadr(fd, part->id.lib, part->eff_group);
-			part->bb_ob = newlibadr(fd, part->id.lib, part->bb_ob);
-
-			lib_link_partdeflect(fd, &part->id, part->pd);
-			lib_link_partdeflect(fd, &part->id, part->pd2);
-
-			if(part->effector_weights)
-				part->effector_weights->group = newlibadr(fd, part->id.lib, part->effector_weights->group);
-
-			dw = part->dupliweights.first;
-			for(; dw; dw=dw->next)
-				dw->ob = newlibadr(fd, part->id.lib, dw->ob);
-
-			if(part->boids) {
-				BoidState *state = part->boids->states.first;
-				BoidRule *rule;
-				for(; state; state=state->next) {
-					rule = state->rules.first;
-				for(; rule; rule=rule->next)
-					switch(rule->type) {
-						case eBoidRuleType_Goal:
-						case eBoidRuleType_Avoid:
-						{
-							BoidRuleGoalAvoid *brga = (BoidRuleGoalAvoid*)rule;
-							brga->ob = newlibadr(fd, part->id.lib, brga->ob);
-							break;
-						}
-						case eBoidRuleType_FollowLeader:
-						{
-							BoidRuleFollowLeader *brfl = (BoidRuleFollowLeader*)rule;
-							brfl->ob = newlibadr(fd, part->id.lib, brfl->ob);
-							break;
-						}
-					}
-				}
-			}
-			#endif
 			pset->id.flag -= LIB_NEEDLINK;
 		}
 		pset= pset->id.next;
@@ -3220,35 +3180,6 @@
 	pset->properties = newdataadr(fd, pset->properties);
 
 	direct_link_animdata(fd, pset->adt);
-
-	#if 0
-	part->pd= newdataadr(fd, part->pd);
-	part->pd2= newdataadr(fd, part->pd2);
-
-	direct_link_animdata(fd, part->adt);
-	direct_link_partdeflect(part->pd);
-	direct_link_partdeflect(part->pd2);
-
-	part->effector_weights = newdataadr(fd, part->effector_weights);
-	if(!part->effector_weights)
-		part->effector_weights = BKE_add_effector_weights(part->eff_group);
-
-	link_list(fd, &part->dupliweights);
-
-	part->boids= newdataadr(fd, part->boids);
-	part->fluid= newdataadr(fd, part->fluid);
-
-	if(part->boids) {
-		BoidState *state;
-		link_list(fd, &part->boids->states);
-		
-		for(state=part->boids->states.first; state; state=state->next) {
-			link_list(fd, &state->rules);
-			link_list(fd, &state->conditions);
-			link_list(fd, &state->actions);
-		}
-	}
-	#endif
 }
 
 /* ************ READ MESH ***************** */

Modified: branches/particles-2010/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/particles-2010/source/blender/blenloader/intern/writefile.c	2010-08-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/blenloader/intern/writefile.c	2010-08-21 20:11:45 UTC (rev 31507)
@@ -689,7 +689,7 @@
 			
 			writedata(wd, DATA, pset->totpages * sizeof(ParticlePage), pset->pages);
 			for (i=0; i < pset->totpages; ++i) {
-				writedata(wd, DATA, pset->page_size * sizeof(NParticle), pset->pages[i].particles);
+				writedata(wd, DATA, pset->page_size * pset->particle_size, pset->pages[i].particles);
 			}
 			
 			writestruct(wd, DATA, "ParticlePropertyInfo", pset->totprop, pset->properties);

Modified: branches/particles-2010/source/blender/editors/space_node/drawnode.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/drawnode.c	2010-08-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/editors/space_node/drawnode.c	2010-08-21 20:11:45 UTC (rev 31507)
@@ -1298,6 +1298,9 @@
 	case SIM_NODE_PARTICLEDYNAMICS:
 		ntype->uifunc = node_simulation_buts_object;
 		break;
+	case SIM_NODE_ADDPARTICLEFORCE:
+		ntype->uifunc = node_simulation_buts_object;
+		break;
 		
 	default:
 		ntype->uifunc= NULL;

Modified: branches/particles-2010/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_view3d/drawobject.c	2010-08-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/editors/space_view3d/drawobject.c	2010-08-21 20:11:45 UTC (rev 31507)
@@ -5960,11 +5960,11 @@
 				if(dt>OB_WIRE) GPU_disable_material();
 			}
 			break;
-//		case OB_PSET:
-//			if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) {
-//				draw_particleset(scene, v3d, ob);
-//			}
-//			break;
+		case OB_PSET:
+			if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) {
+				draw_particleset(scene, v3d, ob);
+			}
+			break;
 		default:
 			if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) {
 				drawaxes(1.0, flag, OB_ARROWS);

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-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/makesrna/intern/rna_nodetree_types.h	2010-08-21 20:11:45 UTC (rev 31507)
@@ -167,5 +167,6 @@
 DefNode( SimulationNode, SIM_NODE_SETPARTICLEDATA,def_sim_objectnode,     "SETPARTICLEDATA",SetParticleData,  "Set Particle Data", ""              )
 DefNode( SimulationNode, SIM_NODE_RANDOM,         0,                      "RANDOM",         Random,           "Random",            ""              )
 DefNode( SimulationNode, SIM_NODE_PARTICLEDYNAMICS, def_sim_objectnode,   "PARTICLEDYNAMICS", ParticleDynamics, "Particle Dynamics", ""            )
+DefNode( SimulationNode, SIM_NODE_ADDPARTICLEFORCE, def_sim_objectnode,   "ADDPARTICLEFORCE", AddParticleForce, "Add Particle Force", ""            )
 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-21 18:46:38 UTC (rev 31506)
+++ branches/particles-2010/source/blender/nodes/SIM_node.h	2010-08-21 20:11:45 UTC (rev 31507)
@@ -75,6 +75,7 @@
 extern bNodeType sim_node_setparticledata;
 extern bNodeType sim_node_random;
 extern bNodeType sim_node_particledynamics;
+extern bNodeType sim_node_addparticleforce;
 
 extern bNodeType sim_node_debugprint;
 

Added: branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c
===================================================================
--- branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c	                        (rev 0)
+++ branches/particles-2010/source/blender/nodes/intern/SIM_nodes/SIM_add_particle_force.c	2010-08-21 20:11:45 UTC (rev 31507)
@@ -0,0 +1,108 @@
+/**
+* ***** BEGIN GPL LICENSE BLOCK *****
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version. 
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software Foundation,
+* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+* 
+* The Original Code is Copyright (C) 2006 Blender Foundation.
+* All rights reserved.
+* 
+* The Original Code is: all of this file.
+* 
+* Contributor(s): none yet.
+* 
+* ***** END GPL LICENSE BLOCK *****
+
+*/
+
+#include "../SIM_util.h"
+
+#include "DNA_object_types.h"
+#include "DNA_particleset_types.h"
+
+#include "BKE_depsgraph.h"
+#include "BKE_particleset.h"
+
+#include "RNA_access.h"
+
+/* **************** Set particle data ******************** */
+
+static bNodeSocketType inputs[]= { 
+	{ SOCK_VECTOR, 1, "Force", 0.0f, 0.0f, 0.0f, 0.0f, -1000.0f, 1000.0f, 0, NDC_PARTICLE },
+	{ -1, 0, "" }
+};
+
+static bNodeSocketType outputs[]= { 
+	{ 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)
+{
+	SimNodeDataStream istream[1];
+	Object *ob = (Object*)job->node->node->id;
+	
+	if (ob && ob->type == OB_PSET) {
+		ParticleSet *pset = (ParticleSet*)ob->data;
+		ParticleIterator pit;
+		ParticlePropertyInfo *propforce = pset_find_particle_property(pset, "Force");
+		
+		if (!propforce)
+			return NODE_EXEC_FINISHED;
+		
+		pit_init(&pit, pset);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list