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:
authorSebastian Parborg <darkdefende@gmail.com>2021-02-22 22:26:51 +0300
committerSebastian Parborg <darkdefende@gmail.com>2021-02-22 22:28:47 +0300
commit3d2d8a1aab0f0141a1a55d1cc93de60815c26946 (patch)
treeecfb51c4d861a373dd3002305e7b2d180f0b1987
parent441c6602704e3a7b828dd4b71ea8061fe9c531bc (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.cc11
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");
}
}