[Bf-blender-cvs] [7e68ef0aa6f] temp-geometry-nodes-extrude-mesh: Only show "Individual" boolean input socket in faces mode

Hans Goudey noreply at git.blender.org
Sun Jan 2 02:41:12 CET 2022


Commit: 7e68ef0aa6fec8a337782d2335dc444f5bc61e7f
Author: Hans Goudey
Date:   Sat Jan 1 19:41:04 2022 -0600
Branches: temp-geometry-nodes-extrude-mesh
https://developer.blender.org/rB7e68ef0aa6fec8a337782d2335dc444f5bc61e7f

Only show "Individual" boolean input socket in faces mode

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

M	source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc

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

diff --git a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
index ecb936544f0..98c185286b7 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
@@ -61,6 +61,16 @@ static void node_init(bNodeTree *UNUSED(tree), bNode *node)
   node->storage = data;
 }
 
+static void node_update(bNodeTree *ntree, bNode *node)
+{
+  const NodeGeometryExtrudeMesh &storage = node_storage(*node);
+  const GeometryNodeExtrudeMeshMode mode = static_cast<GeometryNodeExtrudeMeshMode>(storage.mode);
+
+  bNodeSocket *individual_socket = (bNodeSocket *)node->inputs.last;
+
+  nodeSetSocketAvailability(ntree, individual_socket, mode == GEO_NODE_EXTRUDE_MESH_FACES);
+}
+
 struct AttributeOutputs {
   StrongAnonymousAttributeID top_id;
   StrongAnonymousAttributeID side_id;
@@ -295,7 +305,6 @@ static void extrude_mesh_edges(MeshComponent &component,
     MPoly &poly = new_polys[i];
     poly.loopstart = orig_loop_size + i * 4;
     poly.totloop = 4;
-    poly.mat_nr = 0;
     poly.flag = 0;
   }
 
@@ -1024,7 +1033,8 @@ static void node_geo_exec(GeoNodeExecParams params)
     attribute_outputs.side_id = StrongAnonymousAttributeID("Side");
   }
 
-  const bool extrude_individual = params.extract_input<bool>("Individual");
+  const bool extrude_individual = mode == GEO_NODE_EXTRUDE_MESH_FACES &&
+                                  params.extract_input<bool>("Individual");
 
   geometry_set.modify_geometry_sets([&](GeometrySet &geometry_set) {
     if (geometry_set.has_mesh()) {
@@ -1072,6 +1082,7 @@ void register_node_type_geo_extrude_mesh()
   geo_node_type_base(&ntype, GEO_NODE_EXTRUDE_MESH, "Extrude Mesh", NODE_CLASS_GEOMETRY, 0);
   ntype.declare = file_ns::node_declare;
   node_type_init(&ntype, file_ns::node_init);
+  node_type_update(&ntype, file_ns::node_update);
   ntype.geometry_node_execute = file_ns::node_geo_exec;
   node_type_storage(
       &ntype, "NodeGeometryExtrudeMesh", node_free_standard_storage, node_copy_standard_storage);



More information about the Bf-blender-cvs mailing list