- Home /
(mesh related) code that works in Unity 3.5 does not work in 4.3
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[i].a == edges[edgeIndex].b && edges[i].b == edges[edgeIndex].a)
{
unique[edgeIndex] = false;
unique[i] = 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)
Answer by Steven-1 · Dec 04, 2013 at 03:32 PM
well, found it, the 2nd for loop only goes till "i < edges.Count - 1", for some reason, it should be "i < edges.Count", which fixes the issue.
it's still a mystery to me why it did work in 3.5 though, hm, wait, I guess the order of the vertices must have been different, and this problem ofcourse only becomes visible when the last edge is not a border-edge (which explains why it wasn't always wrong)
Your answer
Follow this Question
Related Questions
Can we run unity version 4.2.2 and 4.3.3 in a same machine.? 1 Answer
What languages does unity 3d use? 1 Answer
How could I detect the outer edges of a mesh? 0 Answers
How can I find the terminal edges on a mesh, after removing triangles from it? 0 Answers
Procedural Mesh with visible seams 0 Answers