Removed fix_polygon_winding's ability to delete edges, since it caused problems
with polygons that have only three vertices and also that isn't really its job to do anyway.
This commit is contained in:
@@ -806,21 +806,10 @@ void MeshEditingLibrary::fix_polygon_winding(MeshEditPolygon2D &polygon)
|
|||||||
const int32_t b_index = i;
|
const int32_t b_index = i;
|
||||||
const int32_t c_index = (i + 1) % polygon.vertices.size();
|
const int32_t c_index = (i + 1) % polygon.vertices.size();
|
||||||
|
|
||||||
const float ab_dist_squared = (polygon.vertices[b_index].position - polygon.vertices[a_index].position).length_squared();
|
|
||||||
const Vector2 ab_edge = (polygon.vertices[b_index].position - polygon.vertices[a_index].position).normalized();
|
const Vector2 ab_edge = (polygon.vertices[b_index].position - polygon.vertices[a_index].position).normalized();
|
||||||
|
|
||||||
const float bc_dist_squared = (polygon.vertices[c_index].position - polygon.vertices[b_index].position).length_squared();
|
|
||||||
const Vector2 bc_edge = (polygon.vertices[c_index].position - polygon.vertices[b_index].position).normalized();
|
const Vector2 bc_edge = (polygon.vertices[c_index].position - polygon.vertices[b_index].position).normalized();
|
||||||
|
|
||||||
if (ab_dist_squared < TINY_NUMBER || bc_dist_squared < TINY_NUMBER || (ab_edge - bc_edge).length_squared() < TEENY_TINY_NUMBER)
|
|
||||||
{
|
|
||||||
polygon.vertices.erase(polygon.vertices.begin() + i);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
total_angle += UtilityFunctions::asin(ab_edge.x * bc_edge.y - ab_edge.y * bc_edge.x);
|
total_angle += UtilityFunctions::asin(ab_edge.x * bc_edge.y - ab_edge.y * bc_edge.x);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (total_angle < 0.0f)
|
if (total_angle < 0.0f)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user