The following code was written in Unity 3.5 and worked back then (and still does in 3.5),
but I tested it in Unity 4.3 and it no longer works correctly.
List<edge> borderedges = new List<edge>();
List<bool> unique = new List<bool>();
for (int i = 0; i < edges.Count; i++)
{
unique.Add(true);
}
for (int edgeIndex = 0; edgeIndex < edges.Count; edgeIndex++)
{
if (unique[edgeIndex])
{
for (int i = edgeIndex + 1; i < edges.Count - 1; i++)
{
if (edges_.a == edges[edgeIndex].b && edges*.b == edges[edgeIndex].a)*_
{
unique[edgeIndex] = false;
unique = false;
break;
}
}
}
}
for (int edgeIndex = 0; edgeIndex < edges.Count; edgeIndex++)
{
if (unique[edgeIndex])
borderedges.Add(edges[edgeIndex]);
}
I can’t see anything that could be wrong, or anything that could cause it to behave differently in Unity 3.5 than 4.
some info about the code:
it’s part of a function that looks for border-edges (edges that are each only part of a single triangle). an “Edge” is simply a struct with 2 ints, a and b, which are vertices indices.
I tested it on a simple square (2 triangles), and in 3.5 it correctly says the mesh has:
- 4 vertices
- 2 triangles
- 6 edges
- 4 borderedges
yet in 4.3 it says the mesh has:
- 4 vertices
- 2 triangles
- 6 edges
- 6 borderedges
so all edges are considered unique for some reason in this case. (for some other meshes it works, but clearly not on all)