[Bf-blender-cvs] [77f9289c570] refactor-mesh-remove-pointers: Merge branch 'master' into refactor-mesh-remove-pointers
Hans Goudey
noreply at git.blender.org
Tue Aug 30 19:43:23 CEST 2022
Commit: 77f9289c570cfbea1b06db136a0513046af110df
Author: Hans Goudey
Date: Tue Aug 30 12:36:34 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB77f9289c570cfbea1b06db136a0513046af110df
Merge branch 'master' into refactor-mesh-remove-pointers
===================================================================
===================================================================
diff --cc source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
index b3412fd843c,d9115d39705..3641ffba64b
--- a/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_distribute_points_on_faces.cc
@@@ -351,9 -348,6 +350,8 @@@ BLI_NOINLINE static void compute_attrib
attribute_outputs.rotation_id.get(), ATTR_DOMAIN_POINT);
}
- const Mesh &mesh = *mesh_component.get_for_read();
+ const Span<MVert> verts = bke::mesh_vertices(mesh);
+ const Span<MLoop> loops = bke::mesh_loops(mesh);
const Span<MLoopTri> looptris{BKE_mesh_runtime_looptri_ensure(&mesh),
BKE_mesh_runtime_looptri_len(&mesh)};
diff --cc source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
index da91b2b07a9,2eb3706bac9..f6a4d2e6cf8
--- a/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_duplicate_elements.cc
@@@ -522,14 -521,13 +521,13 @@@ static void duplicate_faces(GeometrySe
}
geometry_set.keep_only_during_modify({GEO_COMPONENT_TYPE_MESH});
- const MeshComponent &src_component = *geometry_set.get_component_for_read<MeshComponent>();
- const Mesh &mesh = *src_component.get_for_read();
+ const Mesh &mesh = *geometry_set.get_mesh_for_read();
- Span<MVert> verts(mesh.mvert, mesh.totvert);
- Span<MEdge> edges(mesh.medge, mesh.totedge);
- Span<MPoly> polys(mesh.mpoly, mesh.totpoly);
- Span<MLoop> loops(mesh.mloop, mesh.totloop);
+ const Span<MVert> verts = bke::mesh_vertices(mesh);
+ const Span<MEdge> edges = bke::mesh_edges(mesh);
+ const Span<MPoly> polys = bke::mesh_polygons(mesh);
+ const Span<MLoop> loops = bke::mesh_loops(mesh);
- GeometryComponentFieldContext field_context{src_component, ATTR_DOMAIN_FACE};
+ bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_FACE};
FieldEvaluator evaluator(field_context, polys.size());
evaluator.add(count_field);
evaluator.set_selection(selection_field);
@@@ -724,11 -722,11 +722,10 @@@ static void duplicate_edges(GeometrySe
geometry_set.remove_geometry_during_modify();
return;
};
- const MeshComponent &src_component = *geometry_set.get_component_for_read<MeshComponent>();
- const Mesh &mesh = *src_component.get_for_read();
+ const Mesh &mesh = *geometry_set.get_mesh_for_read();
- Span<MVert> verts(mesh.mvert, mesh.totvert);
- Span<MEdge> edges(mesh.medge, mesh.totedge);
+ const Span<MEdge> edges = bke::mesh_edges(mesh);
- GeometryComponentFieldContext field_context{src_component, ATTR_DOMAIN_EDGE};
+ bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_EDGE};
FieldEvaluator evaluator{field_context, edges.size()};
evaluator.add(count_field);
evaluator.set_selection(selection_field);
@@@ -907,11 -905,10 +903,10 @@@ static void duplicate_points_mesh(Geome
const Field<bool> &selection_field,
const IndexAttributes &attribute_outputs)
{
- const MeshComponent &src_component = *geometry_set.get_component_for_read<MeshComponent>();
const Mesh &mesh = *geometry_set.get_mesh_for_read();
- Span<MVert> src_verts(mesh.mvert, mesh.totvert);
+ const Span<MVert> src_verts = bke::mesh_vertices(mesh);
- GeometryComponentFieldContext field_context{src_component, ATTR_DOMAIN_POINT};
+ bke::MeshFieldContext field_context{mesh, ATTR_DOMAIN_POINT};
FieldEvaluator evaluator{field_context, src_verts.size()};
evaluator.add(count_field);
evaluator.set_selection(selection_field);
diff --cc source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
index 9192a0326ee,237e8ffaa7c..b4427903ed6
--- a/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
@@@ -389,13 -412,12 +388,12 @@@ static void extrude_mesh_edges(Mesh &me
const Field<float3> &offset_field,
const AttributeOutputs &attribute_outputs)
{
- Mesh &mesh = *component.get_for_write();
const int orig_vert_size = mesh.totvert;
- Span<MEdge> orig_edges = mesh_edges(mesh);
- Span<MPoly> orig_polys = mesh_polys(mesh);
+ Span<MEdge> orig_edges = bke::mesh_edges(mesh);
+ Span<MPoly> orig_polys = bke::mesh_polygons(mesh);
const int orig_loop_size = mesh.totloop;
- GeometryComponentFieldContext edge_context{component, ATTR_DOMAIN_EDGE};
+ bke::MeshFieldContext edge_context{mesh, ATTR_DOMAIN_EDGE};
FieldEvaluator edge_evaluator{edge_context, mesh.totedge};
edge_evaluator.set_selection(selection_field);
edge_evaluator.add(offset_field);
@@@ -654,13 -675,12 +652,12 @@@ static void extrude_mesh_face_regions(M
const Field<float3> &offset_field,
const AttributeOutputs &attribute_outputs)
{
- Mesh &mesh = *component.get_for_write();
const int orig_vert_size = mesh.totvert;
- Span<MEdge> orig_edges = mesh_edges(mesh);
- Span<MPoly> orig_polys = mesh_polys(mesh);
- Span<MLoop> orig_loops = mesh_loops(mesh);
+ Span<MEdge> orig_edges = bke::mesh_edges(mesh);
+ Span<MPoly> orig_polys = bke::mesh_polygons(mesh);
+ Span<MLoop> orig_loops = bke::mesh_loops(mesh);
- GeometryComponentFieldContext poly_context{component, ATTR_DOMAIN_FACE};
+ bke::MeshFieldContext poly_context{mesh, ATTR_DOMAIN_FACE};
FieldEvaluator poly_evaluator{poly_context, mesh.totpoly};
poly_evaluator.set_selection(selection_field);
poly_evaluator.add(offset_field);
@@@ -1040,11 -1059,10 +1037,10 @@@ static void extrude_individual_mesh_fac
const Field<float3> &offset_field,
const AttributeOutputs &attribute_outputs)
{
- Mesh &mesh = *component.get_for_write();
const int orig_vert_size = mesh.totvert;
const int orig_edge_size = mesh.totedge;
- Span<MPoly> orig_polys = mesh_polys(mesh);
- Span<MLoop> orig_loops = mesh_loops(mesh);
+ Span<MPoly> orig_polys = bke::mesh_polygons(mesh);
+ Span<MLoop> orig_loops = bke::mesh_loops(mesh);
/* Use a mesh for the result of the evaluation because the mesh is reallocated before
* the vertices are moved, and the evaluated result might reference an attribute. */
diff --cc source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
index 0395e1e635c,a752abc2522..2178b9283fb
--- a/source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_flip_faces.cc
@@@ -31,10 -30,9 +30,9 @@@ static void mesh_flip_faces(Mesh &mesh
evaluator.evaluate();
const IndexMask selection = evaluator.get_evaluated_as_mask(0);
- mesh.mloop = (MLoop *)CustomData_duplicate_referenced_layer(&mesh.ldata, CD_MLOOP, mesh.totloop);
- const Span<MPoly> polys{mesh.mpoly, mesh.totpoly};
- MutableSpan<MLoop> loops{mesh.mloop, mesh.totloop};
+ Mesh &mesh = *component.get_for_write();
-
+ const Span<MPoly> polys = bke::mesh_polygons(mesh);
+ MutableSpan<MLoop> loops = bke::mesh_loops_for_write(mesh);
for (const int i : selection.index_range()) {
const MPoly &poly = polys[selection[i]];
diff --cc source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
index 6fa6efbd98d,3e9fcb10c8e..94402c94c14
--- a/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_input_mesh_edge_angle.cc
@@@ -64,22 -64,13 +64,12 @@@ class AngleFieldInput final : public bk
const eAttrDomain domain,
IndexMask UNUSED(mask)) const final
{
- if (component.type() != GEO_COMPONENT_TYPE_MESH) {
- return {};
- }
-
- const MeshComponent &mesh_component = static_cast<const MeshComponent &>(component);
- const Mesh *mesh = mesh_component.get_for_read();
- if (mesh == nullptr) {
- return {};
- }
-
- const Span<MVert> verts = bke::mesh_vertices(*mesh);
- const Span<MPoly> polys = bke::mesh_polygons(*mesh);
- const Span<MLoop> loops = bke::mesh_loops(*mesh);
- Array<EdgeMapEntry> edge_map = create_edge_map(polys, loops, mesh->totedge);
- Span<MVert> vertices{mesh.mvert, mesh.totvert};
- Span<MPoly> polys{mesh.mpoly, mesh.totpoly};
- Span<MLoop> loops{mesh.mloop, mesh.totloop};
++ const Span<MVert> verts = bke::mesh_vertices(mesh);
++ const Span<MPoly> polys = bke::mesh_polygons(mesh);
++ const Span<MLoop> loops = bke::mesh_loops(mesh);
+ Array<EdgeMapEntry> edge_map = create_edge_map(polys, loops, mesh.totedge);
- auto angle_fn =
- [edge_map = std::move(edge_map), vertices, polys, loops](const int i) -> float {
+ auto angle_fn = [edge_map = std::move(edge_map), verts, polys, loops](const int i) -> float {
if (edge_map[i].face_count != 2) {
return 0.0f;
}
@@@ -119,24 -110,14 +109,14 @@@ class SignedAngleFieldInput final : pub
const eAttrDomain domain,
IndexMask UNUSED(mask)) const final
{
- if (component.type() != GEO_COMPONENT_TYPE_MESH) {
- return {};
- }
-
- const MeshComponent &mesh_component = static_cast<const MeshComponent &>(component);
- const Mesh *mesh = mesh_component.get_for_read();
- if (mesh == nullptr) {
- return {};
- }
-
- const Span<MVert> verts = bke::mesh_vertices(*mesh);
- const Span<MEdge> edges = bke::mesh_edges(*mesh);
- const Span<MPoly> polys = bke::mesh_polygons(*mesh);
- const Span<MLoop> loops = bke::mesh_loops(*mesh);
- Array<EdgeMapEntry> edge_map = create_edge_map(polys, loops, mesh->totedge);
- const Span<MVert> vertices(mesh.mvert, mesh.totvert);
- const Span<MEdge> edges(mesh.medge, mesh.totedge);
- const Span<MPoly> polys(mesh.mpoly, mesh.totpoly);
- const Span<MLoop> loops(mesh.mloop, mesh.totloop);
++ const Span<MVert> verts = bke::mesh_vertices(mesh);
++ const Span<MEdge> edges = bke::mesh_edges(mesh);
++ const Span<MPoly> polys
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list