diff options
author | Hans Goudey <h.goudey@me.com> | 2020-11-13 20:35:10 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2020-11-13 20:35:10 +0300 |
commit | 1ddd71780365796efde9c08b0aa08990d2d004a4 (patch) | |
tree | f1f06316818089a1f0dd57d4ef5a68babcb8fe11 | |
parent | 0066e59f2d7a75f8bb5e24a5d88c17944ae618ca (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.cc | 29 |
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, |