From 23dafa4ad67d4caccce1e8576880569416afaca5 Mon Sep 17 00:00:00 2001 From: Hans Goudey Date: Fri, 4 Nov 2022 21:10:30 +0100 Subject: Cleanup: OBJ: Simplify access to loose edges Implementing this with a separate function just added extra code, there wasn't much benefit to it. --- .../io/wavefront_obj/exporter/obj_export_file_writer.cc | 16 +++++++--------- .../blender/io/wavefront_obj/exporter/obj_export_mesh.cc | 9 --------- .../blender/io/wavefront_obj/exporter/obj_export_mesh.hh | 5 ----- 3 files changed, 7 insertions(+), 23 deletions(-) (limited to 'source') diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc b/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc index 5c81cf7abca..5289a8c750a 100644 --- a/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc +++ b/source/blender/io/wavefront_obj/exporter/obj_export_file_writer.cc @@ -7,8 +7,9 @@ #include #include +#include "BKE_attribute.hh" #include "BKE_blender_version.h" -#include "BKE_geometry_set.hh" +#include "BKE_mesh.h" #include "BLI_color.hh" #include "BLI_enumerable_thread_specific.hh" @@ -416,15 +417,12 @@ void OBJWriter::write_edges_indices(FormatHandler &fh, const OBJMesh &obj_mesh_data) const { /* NOTE: ensure_mesh_edges should be called before. */ - const int tot_edges = obj_mesh_data.tot_edges(); - for (int edge_index = 0; edge_index < tot_edges; edge_index++) { - const std::optional> vertex_indices = - obj_mesh_data.calc_loose_edge_vert_indices(edge_index); - if (!vertex_indices) { - continue; + const Span edges = obj_mesh_data.get_mesh()->edges(); + for (const int i : edges.index_range()) { + const MEdge &edge = edges[i]; + if (edge.flag & ME_LOOSEEDGE) { + fh.write_obj_edge(edge.v1 + offsets.vertex_offset + 1, edge.v2 + offsets.vertex_offset + 1); } - fh.write_obj_edge((*vertex_indices)[0] + offsets.vertex_offset + 1, - (*vertex_indices)[1] + offsets.vertex_offset + 1); } } diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc index f5a94b1fc8a..3b4e44ff7e4 100644 --- a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc +++ b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.cc @@ -507,13 +507,4 @@ const char *OBJMesh::get_poly_deform_group_name(const int16_t def_group_index) c return vertex_group.name; } -std::optional> OBJMesh::calc_loose_edge_vert_indices(const int edge_index) const -{ - const Span edges = export_mesh_eval_->edges(); - const MEdge &edge = edges[edge_index]; - if (edge.flag & ME_LOOSEEDGE) { - return std::array{int(edge.v1), int(edge.v2)}; - } - return std::nullopt; -} } // namespace blender::io::obj diff --git a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh index ec98468e2de..89ee6f4dea2 100644 --- a/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh +++ b/source/blender/io/wavefront_obj/exporter/obj_export_mesh.hh @@ -215,11 +215,6 @@ class OBJMesh : NonCopyable { */ const char *get_poly_deform_group_name(int16_t def_group_index) const; - /** - * Calculate vertex indices of an edge's corners if it is a loose edge. - */ - std::optional> calc_loose_edge_vert_indices(int edge_index) const; - /** * Calculate the order in which the polygons should be written into the file (sorted by material * index). -- cgit v1.2.3