// Function to add a list of triangles, given the triangles' verts (grouped by 3's)
        public void AddTriangles(List<BasicModelVert> verts)
        {
            if (verts.Count == 0)
                return;

            for (int i = 0; i < verts.Count; i += 3)
            {
                PreResultTriangle tri = new PreResultTriangle();
                for (int j = 0; j < 3; j++)
                {
                    tri.verts[j] = verts[i + j];
                    tri.v_indices[j] = AddVertex(tri.verts[j].position);
                }

                tri.Prepare();
                tri.id = triangles.Count;
                List<int[]> edges = tri.GetEdges();

                for(int j = 0; j < 3; j++)
                    foreach (PreResultTriangle other in triangles)
                    {
                        int index = other.IndexOfEdge(edges[j]);
                        if(index != -1)
                        {
                            other.edge_neighbors[index] = tri.id;
                            tri.edge_neighbors[j] = other.id;
                        }
                    }

                triangles.Add(tri);
            }
        }
Beispiel #2
0
        // Function to add a list of triangles, given the triangles' verts (grouped by 3's)
        public void AddTriangles(List <BasicModelVert> verts)
        {
            if (verts.Count == 0)
            {
                return;
            }

            for (int i = 0; i < verts.Count; i += 3)
            {
                PreResultTriangle tri = new PreResultTriangle();
                for (int j = 0; j < 3; j++)
                {
                    tri.verts[j]     = verts[i + j];
                    tri.v_indices[j] = AddVertex(tri.verts[j].position);
                }

                tri.Prepare();
                tri.id = triangles.Count;
                List <int[]> edges = tri.GetEdges();

                for (int j = 0; j < 3; j++)
                {
                    foreach (PreResultTriangle other in triangles)
                    {
                        int index = other.IndexOfEdge(edges[j]);
                        if (index != -1)
                        {
                            other.edge_neighbors[index] = tri.id;
                            tri.edge_neighbors[j]       = other.id;
                        }
                    }
                }

                triangles.Add(tri);
            }
        }