[Bf-blender-cvs] [dcb60e2e0d7] refactor-mesh-sharp-face-generic: More progress on versioning

Hans Goudey noreply at git.blender.org
Tue Jan 24 01:04:43 CET 2023


Commit: dcb60e2e0d759803b3f71b5d715518145fba08f4
Author: Hans Goudey
Date:   Mon Jan 23 15:52:27 2023 -0600
Branches: refactor-mesh-sharp-face-generic
https://developer.blender.org/rBdcb60e2e0d759803b3f71b5d715518145fba08f4

More progress on versioning

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

M	source/blender/blenloader/intern/versioning_300.cc

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

diff --git a/source/blender/blenloader/intern/versioning_300.cc b/source/blender/blenloader/intern/versioning_300.cc
index 16d9836a24a..aac9b3c3435 100644
--- a/source/blender/blenloader/intern/versioning_300.cc
+++ b/source/blender/blenloader/intern/versioning_300.cc
@@ -961,8 +961,27 @@ static void version_geometry_nodes_extrude_smooth_propagation(bNodeTree &ntree)
         return false;
       }
       bNodeSocket *capture_in_socket = nodeFindSocket(capture_node, SOCK_IN, "Value_003");
-      bNodeLink *link = in_links_per_socket.lookup_default(capture_in_socket, nullptr);
-      if (!link || link->fromnode->idname != StringRef("GeometryNodeInputShadeSmooth")) {
+      bNodeLink *capture_in_link = in_links_per_socket.lookup_default(capture_in_socket, nullptr);
+      if (!capture_in_link) {
+        return false;
+      }
+      if (capture_in_link->fromnode->idname != StringRef("GeometryNodeInputShadeSmooth")) {
+        return false;
+      }
+      if (geometry_out_links.size() != 1) {
+        return false;
+      }
+      bNodeLink *geometry_out_link = geometry_out_links.first();
+      if (geometry_out_link->tonode->idname != StringRef("GeometryNodeSetShadeSmooth")) {
+        return false;
+      }
+      bNode *set_smooth_node = geometry_out_link->tonode;
+      bNodeSocket *smooth_in_socket = nodeFindSocket(set_smooth_node, SOCK_IN, "Shade Smooth");
+      bNodeLink *connecting_link = in_links_per_socket.lookup_default(smooth_in_socket, nullptr);
+      if (!connecting_link) {
+        return false;
+      }
+      if (connecting_link->fromnode != capture_node) {
         return false;
       }
       return true;
@@ -971,58 +990,51 @@ static void version_geometry_nodes_extrude_smooth_propagation(bNodeTree &ntree)
       continue;
     }
 
-    bNode *capture_node = nullptr;
+    bNode *capture_node = nodeAddNode(nullptr, &ntree, "GeometryNodeAttributeCapture");
+    capture_node->parent = node->parent;
+    capture_node->locx = node->locx - 25;
+    capture_node->locx = node->locy;
+    new_nodes.append(capture_node);
+    static_cast<NodeGeometryAttributeCapture *>(capture_node->storage)->data_type = CD_PROP_BOOL;
+    static_cast<NodeGeometryAttributeCapture *>(capture_node->storage)->domain = ATTR_DOMAIN_FACE;
 
-    if (!capture_node) {
-      capture_node = nodeAddNode(nullptr, &ntree, "GeometryNodeAttributeCapture");
-      new_nodes.append(capture_node);
-      NodeGeometryAttributeCapture &capture_storage = *static_cast<NodeGeometryAttributeCapture *>(
-          capture_node->storage);
-      capture_storage.data_type = CD_PROP_BOOL;
-      capture_storage.domain = ATTR_DOMAIN_FACE;
-      bNodeSocket *capture_out_socket = nodeFindSocket(capture_node, SOCK_OUT, "Attribute_003");
-      bNode *is_smooth_node = nodeAddNode(nullptr, &ntree, "GeometryNodeInputShadeSmooth");
-      nodeAddLink(&ntree,
-                  is_smooth_node,
-                  nodeFindSocket(is_smooth_node, SOCK_OUT, "Smooth"),
-                  capture_node,
-                  nodeFindSocket(capture_node, SOCK_IN, "Value_003"));
-      nodeAddLink(&ntree,
-                  capture_node,
-                  nodeFindSocket(capture_node, SOCK_OUT, "Geometry"),
-                  capture_node,
-                  geometry_in_socket);
-      geometry_in_link->tonode = capture_node;
-      geometry_in_link->tosock = nodeFindSocket(capture_node, SOCK_IN, "Geometry");
-    }
-
-    bNodeSocket *capture_out_socket = nodeFindSocket(capture_node, SOCK_OUT, "Attribute_003");
-
-    bNode *set_smooth_node = nullptr;
-    if (geometry_out_links.size() == 1) {
-      bNodeLink *link = geometry_out_links.first();
-      if (link->tonode->idname == StringRef("GeometryNodeSetShadeSmooth")) {
-      }
-    }
+    bNode *is_smooth_node = nodeAddNode(nullptr, &ntree, "GeometryNodeInputShadeSmooth");
+    is_smooth_node->parent = node->parent;
+    capture_node->locx = capture_node->locx - 25;
+    capture_node->locx = capture_node->locy;
+    nodeAddLink(&ntree,
+                is_smooth_node,
+                nodeFindSocket(is_smooth_node, SOCK_OUT, "Smooth"),
+                capture_node,
+                nodeFindSocket(capture_node, SOCK_IN, "Value_003"));
+    nodeAddLink(&ntree,
+                capture_node,
+                nodeFindSocket(capture_node, SOCK_OUT, "Geometry"),
+                capture_node,
+                geometry_in_socket);
+    geometry_in_link->tonode = capture_node;
+    geometry_in_link->tosock = nodeFindSocket(capture_node, SOCK_IN, "Geometry");
+
+    bNode *set_smooth_node = nodeAddNode(nullptr, &ntree, "GeometryNodeSetShadeSmooth");
+    set_smooth_node->parent = node->parent;
+    set_smooth_node->locx = node->locx + 25;
+    set_smooth_node->locx = node->locy;
+    nodeAddLink(&ntree,
+                node,
+                geometry_out_socket,
+                set_smooth_node,
+                nodeFindSocket(set_smooth_node, SOCK_IN, "Geometry"));
 
+    bNodeSocket *smooth_geometry_out = nodeFindSocket(set_smooth_node, SOCK_OUT, "Geometry");
     for (bNodeLink *link : geometry_out_links) {
-      if (link->tonode->idname == StringRef("GeometryNodeSetShadeSmooth")) {
-        set_smooth_nodes.append(link->tonode);
-        continue;
-      }
-      bNode *set_node = nodeAddNode(nullptr, &ntree, "GeometryNodeSetShadeSmooth");
-      nodeAddLink(&ntree, )
-    }
-
-    for (bNode *set_smooth_node : set_smooth_nodes) {
-      bNodeSocket *in_socket = nodeFindSocket(set_smooth_node, SOCK_IN, "Shade Smooth");
-      if (bNodeLink *link = in_links_per_socket.lookup_default(in_socket, nullptr)) {
-        if (link->fromnode == capture_smooth_node) {
-          continue;
-        }
-      }
-      nodeAddLink(&ntree, capture_smooth_node, capture_out_socket, set_smooth_node, in_socket);
+      link->fromnode = set_smooth_node;
+      link->fromsock = smooth_geometry_out;
     }
+    nodeAddLink(&ntree,
+                capture_node,
+                nodeFindSocket(capture_node, SOCK_OUT, "Attribute_003"),
+                set_smooth_node,
+                nodeFindSocket(set_smooth_node, SOCK_IN, "Shade Smooth"));
   }
 
   /* Move nodes to the front so that they are drawn behind existing nodes. */



More information about the Bf-blender-cvs mailing list