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:
authorJacques Lucke <jacques@blender.org>2020-12-11 19:47:58 +0300
committerJacques Lucke <jacques@blender.org>2020-12-11 19:47:58 +0300
commit5ced167336d49ef42e96e205c72d3935ff302a7e (patch)
tree5ebae8b17842037cdbf0052fe1ae3cebe81e88b1 /source/blender/modifiers
parent4885fbc07b50af0f7b93c0df41d6f64cc79b2fa7 (diff)
Geometry Nodes: support collection sockets
Part of D9739.
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r--source/blender/modifiers/intern/MOD_nodes.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 29ed08f0367..513e16e1a89 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -104,6 +104,12 @@ static void addIdsUsedBySocket(const ListBase *sockets, Set<ID *> &ids)
ids.add(&object->id);
}
}
+ else if (socket->type == SOCK_COLLECTION) {
+ Collection *collection = ((bNodeSocketValueCollection *)socket->default_value)->value;
+ if (collection != nullptr) {
+ ids.add(&collection->id);
+ }
+ }
}
}
@@ -399,6 +405,11 @@ class GeometryNodesEvaluator {
blender::bke::PersistentObjectHandle object_handle = handle_map_.lookup(object);
new (buffer) blender::bke::PersistentObjectHandle(object_handle);
}
+ else if (bsocket->type == SOCK_COLLECTION) {
+ Collection *collection = ((bNodeSocketValueCollection *)bsocket->default_value)->value;
+ blender::bke::PersistentCollectionHandle collection_handle = handle_map_.lookup(collection);
+ new (buffer) blender::bke::PersistentCollectionHandle(collection_handle);
+ }
else {
blender::nodes::socket_cpp_value_get(*bsocket, buffer);
}
@@ -850,6 +861,9 @@ static void check_property_socket_sync(const Object *ob, ModifierData *md)
else if (socket->type == SOCK_GEOMETRY) {
BKE_modifier_set_error(ob, md, "Node group can only have one geometry input");
}
+ else if (socket->type == SOCK_COLLECTION) {
+ BKE_modifier_set_error(ob, md, "Collection socket can not be exposed in the modifier");
+ }
else {
BKE_modifier_set_error(ob, md, "Missing property for input socket \"%s\"", socket->name);
}