diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-01-29 21:29:14 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-01-29 21:29:14 +0300 |
commit | 31ecc5cba00ebcd7eb02fec76c5fbf34825c8995 (patch) | |
tree | 7a3366706a0d9ec37ea68210b6fee7d8344b6a9f /source | |
parent | fd9db17021064552cdecbcfadce4255257d71e17 (diff) |
Fix for bug #8124: dupli particles were not rendering in some cases,
now added dependencies so they are passed to the render engine in
the right order to detect the duplis.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index e1cecaa7a61..5133381ba9f 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -593,6 +593,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int psys= ob->particlesystem.first; if(psys) { ParticleEffectorCache *nec; + GroupObject *go; for(; psys; psys=psys->next) { ParticleSettings *part= psys->part; @@ -605,6 +606,18 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int dag_add_relation(dag, node2, node, DAG_RL_DATA_DATA); } + if(part->draw_as == PART_DRAW_OB && part->dup_ob) { + node2 = dag_get_node(dag, part->dup_ob); + dag_add_relation(dag, node, node2, DAG_RL_OB_OB); + } + + if(part->draw_as == PART_DRAW_GR && part->dup_group) { + for(go=part->dup_group->gobject.first; go; go=go->next) { + node2 = dag_get_node(dag, go->ob); + dag_add_relation(dag, node, node2, DAG_RL_OB_OB); + } + } + if(psys->effectors.first) psys_end_effectors(psys); psys_init_effectors(ob,psys->part->eff_group,psys); |