diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-02-27 13:17:36 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-02-27 16:50:42 +0300 |
commit | 87066782e720257bef19450f0e3f7c739101b9b8 (patch) | |
tree | 40240cc52841fa80b3b33ff7bb0cb5ca513d7649 /source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc | |
parent | 05dc3d43caf5a5153a8bd1e69d5f77b0e019aa3d (diff) |
Depsgraph: Make it easier to control which bases being pulled into the graph
Just de-duplicates some logic. Should be no functional changes.
Diffstat (limited to 'source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc index 411199fe9be..db1cfa6b83f 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes_view_layer.cc @@ -97,16 +97,15 @@ void DepsgraphNodeBuilder::build_view_layer( * but object is expected to be an original one. Hence we go into some * tricks here iterating over the view layer. */ int base_index = 0; - const int base_flag = (graph_->mode == DAG_EVAL_VIEWPORT) ? - BASE_ENABLED_VIEWPORT : BASE_ENABLED_RENDER; LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { /* object itself */ - const bool is_object_visible = (base->flag & base_flag); - if (is_object_visible) { - build_object(base_index, - base->object, - linked_state, - is_object_visible); + if (needPullBaseIntoGraph(base)) { + /* NOTE: We consider object visible even if it's currently + * restricted by the base/restriction flags. Otherwise its drivers + * will never be evaluated. + * + * TODO(sergey): Need to go more granular on visibility checks. */ + build_object(base_index, base->object, linked_state, true); ++base_index; } base->object->select_id = select_id++; |