diff options
author | Sybren A. Stüvel <sybren@blender.org> | 2020-02-21 13:16:59 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@blender.org> | 2020-02-21 13:16:59 +0300 |
commit | 94e180bd806ab3b21db07afe4962de666b407217 (patch) | |
tree | 48c0d099fe476220bf20aae066ae15562e812a07 /source/blender/depsgraph | |
parent | be2bc97eba499c48e3856c8e5ec4d869e28b4d04 (diff) |
Fix: Drivers on hide_viewport and hide_render throw warnings
This partially fixes T73593.
The `add_relation(driver_key, property_entry_key, ...);` call can fail
in the following situation:
- A collection is linked, and instanced into the scene by an Empty.
- The collection contains an object with a driver on its `hide_render` or
`hide_viewport` property.
As the object doesn't exist as a real object in the scene, it's added with
`base_index=-1` to the depsgraph (see `DepsgraphNodeBuilder::build_collection()`).
As a result the node for syncing the restrictflags back to the base
isn't present in the depsgraph, and the `add_relation()` call failed.
This commit fixes the warning, simply by not attempting to add the
offending relation.
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r-- | source/blender/depsgraph/intern/builder/deg_builder_relations.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index e45644f001f..64fb15a465b 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -1488,7 +1488,11 @@ void DepsgraphRelationBuilder::build_driver_data(ID *id, FCurve *fcu) } else { /* If it's not a Bone, handle the generic single dependency case. */ - add_relation(driver_key, property_entry_key, "Driver -> Driven Property"); + Node *node_to = get_node(property_entry_key); + if (node_to != nullptr) { + add_relation(driver_key, property_entry_key, "Driver -> Driven Property"); + } + /* Similar to the case with f-curves, driver might drive a nested * data-block, which means driver execution should wait for that * data-block to be copied. */ |