[Bf-blender-cvs] [f3bdabbe24f] blender-v3.0-release: Fix: Incorrect modifier warning with non-geometry input first

Hans Goudey noreply at git.blender.org
Thu Nov 11 18:47:26 CET 2021


Commit: f3bdabbe24fe591dc90d62af373c01d06e8e4c8a
Author: Hans Goudey
Date:   Thu Nov 11 11:47:19 2021 -0600
Branches: blender-v3.0-release
https://developer.blender.org/rBf3bdabbe24fe591dc90d62af373c01d06e8e4c8a

Fix: Incorrect modifier warning with non-geometry input first

The code assumed that any geometry input that wasn't the first input
was a second geometry input. Fix by separating the warning for the
first input and for the number of geometry inputs.

===================================================================

M	source/blender/modifiers/intern/MOD_nodes.cc

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_nodes.cc b/source/blender/modifiers/intern/MOD_nodes.cc
index 3444be40a59..70f6020f5a9 100644
--- a/source/blender/modifiers/intern/MOD_nodes.cc
+++ b/source/blender/modifiers/intern/MOD_nodes.cc
@@ -1026,17 +1026,22 @@ static void check_property_socket_sync(const Object *ob, ModifierData *md)
 {
   NodesModifierData *nmd = reinterpret_cast<NodesModifierData *>(md);
 
-  int i = 0;
+  int geometry_socket_count = 0;
+
+  int i;
   LISTBASE_FOREACH_INDEX (const bNodeSocket *, socket, &nmd->node_group->inputs, i) {
     /* The first socket is the special geometry socket for the modifier object. */
-    if (i == 0 && socket->type == SOCK_GEOMETRY) {
-      continue;
+    if (i == 0) {
+      if (socket->type == SOCK_GEOMETRY) {
+        continue;
+      }
+      BKE_modifier_set_error(ob, md, "The first node group input must be a geometry");
     }
 
     IDProperty *property = IDP_GetPropertyFromGroup(nmd->settings.properties, socket->identifier);
     if (property == nullptr) {
       if (socket->type == SOCK_GEOMETRY) {
-        BKE_modifier_set_error(ob, md, "Node group can only have one geometry input");
+        geometry_socket_count++;
       }
       else {
         BKE_modifier_set_error(ob, md, "Missing property for input socket \"%s\"", socket->name);
@@ -1050,6 +1055,10 @@ static void check_property_socket_sync(const Object *ob, ModifierData *md)
       continue;
     }
   }
+
+  if (geometry_socket_count > 1) {
+    BKE_modifier_set_error(ob, md, "Node group can only have one geometry input");
+  }
 }
 
 static void modifyGeometry(ModifierData *md,



More information about the Bf-blender-cvs mailing list