diff options
author | Sebastian Parborg <darkdefende@gmail.com> | 2021-02-22 22:26:51 +0300 |
---|---|---|
committer | Sebastian Parborg <darkdefende@gmail.com> | 2021-02-22 22:28:47 +0300 |
commit | 3d2d8a1aab0f0141a1a55d1cc93de60815c26946 (patch) | |
tree | ecfb51c4d861a373dd3002305e7b2d180f0b1987 | |
parent | 441c6602704e3a7b828dd4b71ea8061fe9c531bc (diff) |
Fix: Geometry nodes not depending on instanced collections properly
Geometry nodes were not adding referenced instanced collections as
dependencies to depsgraph.
This would lead to meshes and data not being ready on evaluation in
certain cases.
-rw-r--r-- | source/blender/modifiers/intern/MOD_nodes.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc index 9ec7bdf3b80..fe5a8bc59d4 100644 --- a/source/blender/modifiers/intern/MOD_nodes.cc +++ b/source/blender/modifiers/intern/MOD_nodes.cc @@ -151,11 +151,20 @@ static void find_used_ids_from_settings(const NodesModifierSettings &settings, S &ids); } +static void add_collection_object_relations_recursive(const ModifierUpdateDepsgraphContext *ctx, + Collection &collection); + static void add_object_relation(const ModifierUpdateDepsgraphContext *ctx, Object &object) { DEG_add_object_relation(ctx->node, &object, DEG_OB_COMP_TRANSFORM, "Nodes Modifier"); if (&(ID &)object != &ctx->object->id) { - if (object.type != OB_EMPTY) { + if (object.type == OB_EMPTY) { + Collection *collection_instance = object.instance_collection; + if (collection_instance != nullptr) { + add_collection_object_relations_recursive(ctx, *collection_instance); + } + } + else { DEG_add_object_relation(ctx->node, &object, DEG_OB_COMP_GEOMETRY, "Nodes Modifier"); } } |