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:
authorHans Goudey <h.goudey@me.com>2020-11-13 20:35:10 +0300
committerHans Goudey <h.goudey@me.com>2020-11-13 20:35:10 +0300
commit1ddd71780365796efde9c08b0aa08990d2d004a4 (patch)
treef1f06316818089a1f0dd57d4ef5a68babcb8fe11
parent0066e59f2d7a75f8bb5e24a5d88c17944ae618ca (diff)
Geometry Nodes: Improve error messages for property mismatches
Related to T82438. This adds some basic checks for common errors and currently unsupported socket types in the modifier.
-rw-r--r--source/blender/modifiers/intern/MOD_nodes.cc29
1 files changed, 19 insertions, 10 deletions
diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index ddbd6da1eaf..93d1c60f1ba 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -789,24 +789,33 @@ static void check_property_socket_sync(const Object *ob, ModifierData *md)
IDProperty *property = IDP_GetPropertyFromGroup(nmd->settings.properties, socket->identifier);
if (property == nullptr) {
- BKE_modifier_set_error(ob,
- md,
- "Missing property for input socket \"%s\" (\"%s\") ",
- socket->name,
- socket->identifier);
+ if (socket->type == SOCK_STRING) {
+ BKE_modifier_set_error(ob, md, "String sockets cannot be exposed in the modifier");
+ }
+ else if (socket->type == SOCK_OBJECT) {
+ BKE_modifier_set_error(ob, md, "Object sockets cannot be exposed in the modifier");
+ }
+ else if (socket->type == SOCK_GEOMETRY) {
+ BKE_modifier_set_error(ob, md, "The node group can only have one geometry input");
+ }
+ else {
+ BKE_modifier_set_error(
+ ob, md, "Missing modifier property for input socket \"%s\"", socket->name);
+ }
continue;
}
const SocketPropertyType *property_type = get_socket_property_type(*socket);
if (!property_type->is_correct_type(*property)) {
- BKE_modifier_set_error(ob,
- md,
- "Property type does not match for input socket \"%s\" (\"%s\") ",
- socket->name,
- socket->identifier);
+ BKE_modifier_set_error(
+ ob, md, "Property type does not match for input socket \"(%s)\"", socket->name);
continue;
}
}
+
+ if (!BLI_listbase_is_single(&nmd->node_group->outputs)) {
+ BKE_modifier_set_error(ob, md, "The node group must have a single geometry output");
+ }
}
static GeometrySetPtr modifyGeometry(ModifierData *md,