[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