diff --git a/src/liborng/nodes/mesh_editing_library.cpp b/src/liborng/nodes/mesh_editing_library.cpp index 4bb1cc9..0568e12 100644 --- a/src/liborng/nodes/mesh_editing_library.cpp +++ b/src/liborng/nodes/mesh_editing_library.cpp @@ -490,15 +490,7 @@ PackedVector3Array MeshEditingLibrary::slice_mesh(MeshInstance3D *original_mesh_ std::vector error_polygons; const Transform3D &plane_inverse_transform = MeshEditingLibrary::project_edges(edges_2d, original_mesh_instance->get_transform(), clip_edges, local_plane); MeshEditingLibrary::build_2d_polygons_from_edges(polygon_set, edges_2d, error_polygons); - - if (error_polygons.size() > 0) - { - Ref debug_mesh = MeshEditingLibrary::draw_debug_polygons(error_polygons, plane_inverse_transform, Color(1.0f, 0.0f, 0.0f, 1.0f)); - MeshInstance3D *mi = memnew(MeshInstance3D); - original_mesh_instance->add_child(mi); - mi->set_transform(Transform3D()); - mi->set_mesh(debug_mesh); - } + MeshEditingLibrary::draw_debug_polygons(original_mesh_instance, error_polygons, plane_inverse_transform, Color(1.0f, 0.0f, 0.0f, 1.0f)); MeshSlicePlaneOrientation uv_plane = MeshSlicePlaneOrientation::Z; const Basis &mesh_instance_basis = original_mesh_instance->get_basis(); @@ -880,9 +872,12 @@ const Vector2 MeshEditingLibrary::calculate_planar_uv(const Vector3 &vertex, con } -Ref MeshEditingLibrary::draw_debug_polygons(const std::vector &polygons, const Transform3D &plane_transform, const Color &colour) +void MeshEditingLibrary::draw_debug_polygons(Node3D *mesh_parent_node, const std::vector &polygons, const Transform3D &plane_transform, const Color &colour) { #ifdef DEBUG_ENABLED + if (polygons.size() <= 0) + return; + Ref material; material.instantiate(); material->set_flag(BaseMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true); @@ -912,6 +907,9 @@ Ref MeshEditingLibrary::draw_debug_polygons(const std::vectorsurface_end(); - return im; + MeshInstance3D *mi = memnew(MeshInstance3D); + mesh_parent_node->add_child(mi); + mi->set_transform(Transform3D()); + mi->set_mesh(im); #endif // DEBUG_ENABLED } diff --git a/src/liborng/nodes/mesh_editing_library.h b/src/liborng/nodes/mesh_editing_library.h index 54c76a1..5a17a1d 100644 --- a/src/liborng/nodes/mesh_editing_library.h +++ b/src/liborng/nodes/mesh_editing_library.h @@ -90,7 +90,7 @@ private: static bool find_next_edge(MeshEditEdge2D &out_next_edge, std::vector &in_edge_set, const MeshEditVert2D &start); static void fix_polygon_winding(MeshEditPolygon2D &polygon); - static Ref draw_debug_polygons(const std::vector &polygons, const Transform3D &plane_transform, const Color &colour); + static void draw_debug_polygons(Node3D *mesh_parent_node, const std::vector &polygons, const Transform3D &plane_transform, const Color &colour); // Godot boilerplate below protected: