diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-07-13 11:39:55 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2016-07-13 11:41:09 +0300 |
commit | c0d8166f828ce9c1eaf243ad27097bfcfff1820d (patch) | |
tree | 4646932d7321b12c52ee825563a489fd5f3cae78 /source/blender/depsgraph | |
parent | 527674b316b8a2736deb3ef7f64aa2861b03da87 (diff) |
Revert "Depsgraph: Russian electric tape bodge to have multiple proxies work"
This reverts commit 47d0d9cca4d0c3ccbdc368e97fc24652379fd368.
Reverting the commit. Not only it did not solve all the cases of proxy popping,
but also broke real cases with single proxy involved.
Diffstat (limited to 'source/blender/depsgraph')
3 files changed, 5 insertions, 19 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index e036878ddff..b05d7750b9a 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -296,15 +296,16 @@ void DepsgraphNodeBuilder::build_scene(Main *bmain, Scene *scene) for (Base *base = (Base *)scene->base.first; base; base = base->next) { Object *ob = base->object; + /* object itself */ + build_object(scene, base, ob); + /* object that this is a proxy for */ // XXX: the way that proxies work needs to be completely reviewed! if (ob->proxy) { ob->proxy->proxy_from = ob; + build_object(scene, base, ob->proxy); } - /* object itself */ - build_object(scene, base, ob); - /* Object dupligroup. */ if (ob->dup_group) { build_group(scene, base, ob->dup_group); @@ -485,12 +486,6 @@ void DepsgraphNodeBuilder::build_object(Scene *scene, Base *base, Object *ob) if (ob->gpd) { build_gpencil(ob->gpd); } - - if (ob->proxy != NULL) { - add_operation_node(&ob->id, DEPSNODE_TYPE_PROXY, DEPSOP_TYPE_POST, - function_bind(BKE_object_eval_proxy_backlink, _1, ob), - DEG_OPCODE_PLACEHOLDER, "Parameters Eval"); - } } void DepsgraphNodeBuilder::build_object_transform(Scene *scene, Object *ob) diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 34c661b21f3..44445453d01 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -266,13 +266,6 @@ void DepsgraphRelationBuilder::build_scene(Main *bmain, Scene *scene) for (Base *base = (Base *)scene->base.first; base; base = base->next) { Object *ob = base->object; - /* Object that this is a proxy for. - * Just makes sure backlink is correct. - */ - if (ob->proxy) { - ob->proxy->proxy_from = ob; - } - /* object itself */ build_object(bmain, scene, ob); @@ -440,6 +433,7 @@ void DepsgraphRelationBuilder::build_object(Main *bmain, Scene *scene, Object *o break; } + case OB_ARMATURE: /* Pose */ if (ob->id.lib != NULL && ob->proxy_from != NULL) { build_proxy_rig(ob); diff --git a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc index 9ba0b61a4f1..f9e1504b3ce 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_flush.cc +++ b/source/blender/depsgraph/intern/eval/deg_eval_flush.cc @@ -85,9 +85,6 @@ static void flush_init_func(void *data_v, int i) id_node->done = 0; comp_node->done = 0; node->scheduled = false; - if (comp_node->type == DEPSNODE_TYPE_PROXY) { - node->flag |= DEPSOP_FLAG_NEEDS_UPDATE; - } } /* Flush updates from tagged nodes outwards until all affected nodes |