diff options
Diffstat (limited to 'source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc')
-rw-r--r-- | source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc index f048ec11f77..891f50c6a2c 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc @@ -514,7 +514,6 @@ static void duplicate_faces(GeometrySet &geometry_set, geometry_set.keep_only_during_modify({GEO_COMPONENT_TYPE_MESH}); const Mesh &mesh = *geometry_set.get_mesh_for_read(); - const Span<MVert> verts = mesh.verts(); const Span<MEdge> edges = mesh.edges(); const Span<MPoly> polys = mesh.polys(); const Span<MLoop> loops = mesh.loops(); @@ -539,12 +538,11 @@ static void duplicate_faces(GeometrySet &geometry_set, offsets[selection.size()] = total_polys; Mesh *new_mesh = BKE_mesh_new_nomain(total_loops, total_loops, 0, total_loops, total_polys); - MutableSpan<MVert> new_verts = new_mesh->verts_for_write(); MutableSpan<MEdge> new_edges = new_mesh->edges_for_write(); MutableSpan<MPoly> new_polys = new_mesh->polys_for_write(); MutableSpan<MLoop> new_loops = new_mesh->loops_for_write(); - Array<int> vert_mapping(new_verts.size()); + Array<int> vert_mapping(new_mesh->totvert); Array<int> edge_mapping(new_edges.size()); Array<int> loop_mapping(new_loops.size()); @@ -560,7 +558,6 @@ static void duplicate_faces(GeometrySet &geometry_set, for (const int i_loops : IndexRange(source.totloop)) { const MLoop ¤t_loop = loops[source.loopstart + i_loops]; loop_mapping[loop_index] = source.loopstart + i_loops; - new_verts[loop_index] = verts[current_loop.v]; vert_mapping[loop_index] = current_loop.v; new_edges[loop_index] = edges[current_loop.e]; edge_mapping[loop_index] = current_loop.e; @@ -886,10 +883,9 @@ static void duplicate_points_mesh(GeometrySet &geometry_set, const IndexAttributes &attribute_outputs) { const Mesh &mesh = *geometry_set.get_mesh_for_read(); - const Span<MVert> src_verts = mesh.verts(); bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_POINT}; - FieldEvaluator evaluator{field_context, src_verts.size()}; + FieldEvaluator evaluator{field_context, mesh.totvert}; evaluator.add(count_field); evaluator.set_selection(selection_field); evaluator.evaluate(); @@ -899,9 +895,6 @@ static void duplicate_points_mesh(GeometrySet &geometry_set, Array<int> offsets = accumulate_counts_to_offsets(selection, counts); Mesh *new_mesh = BKE_mesh_new_nomain(offsets.last(), 0, 0, 0, 0); - MutableSpan<MVert> dst_verts = new_mesh->verts_for_write(); - - threaded_slice_fill(offsets.as_span(), selection, src_verts, dst_verts); copy_attributes_without_id(geometry_set, GEO_COMPONENT_TYPE_MESH, |