Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenkernel/intern/depsgraph.c')
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c42
1 files changed, 13 insertions, 29 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index e090a2e4cae..01dd6c0c657 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -349,14 +349,14 @@ static void dag_add_driver_relation(Ipo *ipo, DagForest *dag, DagNode *node, int
}
}
-static void dag_add_collision_field_relation(DagForest *dag, Object *ob, DagNode *node)
+static void dag_add_collision_field_relation(DagForest *dag, Scene *scene, Object *ob, DagNode *node)
{
Base *base;
DagNode *node2;
// would be nice to have a list of colliders here
// so for now walk all objects in scene check 'same layer rule'
- for(base = G.scene->base.first; base; base= base->next) {
+ for(base = scene->base.first; base; base= base->next) {
if((base->lay & ob->lay) && base->object->pd) {
Object *ob1= base->object;
if((ob1->pd->deflect || ob1->pd->forcefield) && (ob1 != ob)) {
@@ -367,7 +367,7 @@ static void dag_add_collision_field_relation(DagForest *dag, Object *ob, DagNode
}
}
-static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int mask)
+static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, Object *ob, int mask)
{
bConstraint *con;
bConstraintChannel *conchan;
@@ -471,7 +471,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int
for(md=ob->modifiers.first; md; md=md->next) {
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
- if (mti->updateDepgraph) mti->updateDepgraph(md, dag, ob, node);
+ if (mti->updateDepgraph) mti->updateDepgraph(md, dag, scene, ob, node);
}
}
if (ob->parent) {
@@ -546,10 +546,10 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int
/* softbody collision */
if((ob->type==OB_MESH) || (ob->type==OB_CURVE) || (ob->type==OB_LATTICE))
if(modifiers_isSoftbodyEnabled(ob) || modifiers_isClothEnabled(ob))
- dag_add_collision_field_relation(dag, ob, node);
+ dag_add_collision_field_relation(dag, scene, ob, node);
if (ob->type==OB_MBALL) {
- Object *mom= find_basis_mball(ob);
+ Object *mom= find_basis_mball(scene, ob);
if(mom!=ob) {
node2 = dag_get_node(dag, mom);
dag_add_relation(dag,node,node2,DAG_RL_DATA_DATA|DAG_RL_OB_DATA, "Metaball"); // mom depends on children!
@@ -612,7 +612,7 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Object *ob, int
if(psys->effectors.first)
psys_end_effectors(psys);
- psys_init_effectors(ob,psys->part->eff_group,psys);
+ psys_init_effectors(scene, ob, psys->part->eff_group, psys);
if(psys->effectors.first) {
for(nec= psys->effectors.first; nec; nec= nec->next) {
@@ -707,9 +707,9 @@ struct DagForest *build_dag(struct Scene *sce, short mask)
for(base = sce->base.first; base; base= base->next) {
ob= base->object;
- build_dag_object(dag, scenenode, ob, mask);
+ build_dag_object(dag, scenenode, sce, ob, mask);
if(ob->proxy)
- build_dag_object(dag, scenenode, ob->proxy, mask);
+ build_dag_object(dag, scenenode, sce, ob->proxy, mask);
/* handled in next loop */
if(ob->dup_group)
@@ -720,7 +720,7 @@ struct DagForest *build_dag(struct Scene *sce, short mask)
for(group= G.main->group.first; group; group= group->id.next) {
if(group->id.flag & LIB_DOIT) {
for(go= group->gobject.first; go; go= go->next) {
- build_dag_object(dag, scenenode, go->ob, mask);
+ build_dag_object(dag, scenenode, sce, go->ob, mask);
}
group->id.flag &= ~LIB_DOIT;
}
@@ -2137,22 +2137,6 @@ void DAG_scene_update_flags(Scene *scene, unsigned int lay)
}
-/* for depgraph updating, all layers visible in a screen */
-/* this is a copy from editscreen.c... I need to think over a more proper solution for this */
-/* probably the DAG_object_flush_update() should give layer too? */
-/* or some kind of dag context... (DAG_set_layer) */
-static unsigned int dag_screen_view3d_layers(void)
-{
- ScrArea *sa;
- int layer= 0;
-
- for(sa= G.curscreen->areabase.first; sa; sa= sa->next) {
- if(sa->spacetype==SPACE_VIEW3D)
- layer |= ((View3D *)sa->spacedata.first)->lay;
- }
- return layer;
-}
-
/* flag this object and all its relations to recalc */
/* if you need to do more objects, tag object yourself and
@@ -2186,9 +2170,9 @@ void DAG_object_flush_update(Scene *sce, Object *ob, short flag)
}
}
- if(G.curscreen)
- DAG_scene_flush_update(sce, dag_screen_view3d_layers(), 0);
- else
+// XXX if(G.curscreen)
+// DAG_scene_flush_update(sce, dag_screen_view3d_layers(), 0);
+// else
DAG_scene_flush_update(sce, sce->lay, 0);
}