draw_debug_polygons() now handles parenting the line mesh all on its own.
This commit is contained in:
@@ -490,15 +490,7 @@ PackedVector3Array MeshEditingLibrary::slice_mesh(MeshInstance3D *original_mesh_
|
|||||||
std::vector<MeshEditPolygon2D> error_polygons;
|
std::vector<MeshEditPolygon2D> error_polygons;
|
||||||
const Transform3D &plane_inverse_transform = MeshEditingLibrary::project_edges(edges_2d, original_mesh_instance->get_transform(), clip_edges, local_plane);
|
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);
|
MeshEditingLibrary::build_2d_polygons_from_edges(polygon_set, edges_2d, error_polygons);
|
||||||
|
MeshEditingLibrary::draw_debug_polygons(original_mesh_instance, error_polygons, plane_inverse_transform, Color(1.0f, 0.0f, 0.0f, 1.0f));
|
||||||
if (error_polygons.size() > 0)
|
|
||||||
{
|
|
||||||
Ref<Mesh> 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
MeshSlicePlaneOrientation uv_plane = MeshSlicePlaneOrientation::Z;
|
MeshSlicePlaneOrientation uv_plane = MeshSlicePlaneOrientation::Z;
|
||||||
const Basis &mesh_instance_basis = original_mesh_instance->get_basis();
|
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<Mesh> MeshEditingLibrary::draw_debug_polygons(const std::vector<MeshEditPolygon2D> &polygons, const Transform3D &plane_transform, const Color &colour)
|
void MeshEditingLibrary::draw_debug_polygons(Node3D *mesh_parent_node, const std::vector<MeshEditPolygon2D> &polygons, const Transform3D &plane_transform, const Color &colour)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
|
if (polygons.size() <= 0)
|
||||||
|
return;
|
||||||
|
|
||||||
Ref<StandardMaterial3D> material;
|
Ref<StandardMaterial3D> material;
|
||||||
material.instantiate();
|
material.instantiate();
|
||||||
material->set_flag(BaseMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
|
material->set_flag(BaseMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
|
||||||
@@ -912,6 +907,9 @@ Ref<Mesh> MeshEditingLibrary::draw_debug_polygons(const std::vector<MeshEditPoly
|
|||||||
}
|
}
|
||||||
im->surface_end();
|
im->surface_end();
|
||||||
|
|
||||||
return im;
|
MeshInstance3D *mi = memnew(MeshInstance3D);
|
||||||
|
mesh_parent_node->add_child(mi);
|
||||||
|
mi->set_transform(Transform3D());
|
||||||
|
mi->set_mesh(im);
|
||||||
#endif // DEBUG_ENABLED
|
#endif // DEBUG_ENABLED
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ private:
|
|||||||
static bool find_next_edge(MeshEditEdge2D &out_next_edge, std::vector<MeshEditEdge2D> &in_edge_set, const MeshEditVert2D &start);
|
static bool find_next_edge(MeshEditEdge2D &out_next_edge, std::vector<MeshEditEdge2D> &in_edge_set, const MeshEditVert2D &start);
|
||||||
static void fix_polygon_winding(MeshEditPolygon2D &polygon);
|
static void fix_polygon_winding(MeshEditPolygon2D &polygon);
|
||||||
|
|
||||||
static Ref<Mesh> draw_debug_polygons(const std::vector<MeshEditPolygon2D> &polygons, const Transform3D &plane_transform, const Color &colour);
|
static void draw_debug_polygons(Node3D *mesh_parent_node, const std::vector<MeshEditPolygon2D> &polygons, const Transform3D &plane_transform, const Color &colour);
|
||||||
|
|
||||||
// Godot boilerplate below
|
// Godot boilerplate below
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
Reference in New Issue
Block a user