void BuildMesh(Line[] lines) { int ringVertexCount = this.currentRingPoints.Length; List <SegmentVertexGroup> vertexGroups = new List <SegmentVertexGroup>(); List <SegmentQuadGroup> quadGroups = new List <SegmentQuadGroup>(); foreach (Line l in lines) { Vector3 origin = l.start; Vector3 right = l.right; Vector3 up = l.up; List <Vector3> vertices = new List <Vector3>(); // Calculate All Vertices foreach (Vector3 v in this.currentRingPoints) { vertices.Add(origin + right * v.x * this.scale + up * v.y * this.scale); } vertexGroups.Add(new SegmentVertexGroup(vertices.ToArray())); } if (this.lines.circle) { vertexGroups[0] = new SegmentVertexGroup(vertexGroups[vertexGroups.Count - 1]); } SegmentVertexGroup[] vertexGroupArray = vertexGroups.ToArray(); for (int i = 1; i <= lines.Length - 1; i++) { SegmentVertexGroup s1 = vertexGroupArray[i - 1]; SegmentVertexGroup s2 = vertexGroupArray[i]; List <Quad> quads = new List <Quad>(); for (int v = 1; v <= ringVertexCount - 1; v++) { Quad q = new Quad(s1.segmentVertices[v - 1], s2.segmentVertices[v - 1], s1.segmentVertices[v], s2.segmentVertices[v]); quads.Add(q); } if (this.seamGeometry) { Quad qSeam = new Quad(s1.segmentVertices[ringVertexCount - 1], s2.segmentVertices[ringVertexCount - 1], s1.segmentVertices[0], s2.segmentVertices[0]); quads.Add(qSeam); } quadGroups.Add(new SegmentQuadGroup(quads.ToArray())); } quadGroups.ToArray(); foreach (SegmentQuadGroup sQuad in quadGroups) { foreach (Quad quad in sQuad.segmentQuads) { base.AddQuad(quad); } } }
public SegmentVertexGroup(SegmentVertexGroup segmentVertices) { this.segmentVertices = segmentVertices.segmentVertices; }