public Edge(Vertex v1, Vertex v2) { if (v1 == null || v2 == null) throw new ArgumentNullException("One of the 2 vertices for this edge is null."); else if(v1 == v2) throw new Exception("The edge cannot exist from the same vertices."); // Let the vertices know that they're being used in this edge. v1.Edges.AddLast(this); v2.Edges.AddLast(this); _vertex1 = v1; _vertex2 = v2; }
/// <summary> /// Fills Face[] using the available Vec3Vertices and Indices. /// </summary> public void CreateFaces() { var n = 3; var faces = new List<Face>(); _idxForVertex = new Dictionary<uint, Vertex>(); _vertices = new Vertex[_vec3Vertices.Length]; #region getVertex(...) function Func<ushort, Vertex> getVertex = idx => { if (_idxForVertex.ContainsKey(idx)) { return _idxForVertex[idx]; } else { var vert = new Vertex(idx, _vec3Vertices[idx], _normals == null ? new vec3() : _normals[idx]); _idxForVertex[idx] = vert; _vertices[idx] = vert; return vert; } }; #endregion getVertex(...) function for (int i = 0; i < _indices.Length; i += n) { var idx0 = _indices[i]; var idx1 = _indices[i + 1]; var idx2 = _indices[i + 2]; Vertex v0 = getVertex(idx0); Vertex v1 = getVertex(idx1); Vertex v2 = getVertex(idx2); //faces.Add(new Face(new Vertex[] { v0, v1, v2 })); } _faces = faces.ToArray(); }