//複数のラインを作成 private LineMeshData CreateLines() { if (meshs == null) { return(new LineMeshData()); } List <LineMeshData> meshList = new List <LineMeshData> (); foreach (LineMesh lm in meshs) { meshList.Add(CreateLine(lm)); } return(LineMeshData.Combine(meshList)); }
//ラインを作成 private LineMeshData CreateLine(LineMesh lm) { Vector3[] vert = lm.vertices; Color[] colorE = lm.colorOfEdge; Color[] colorV = lm.colorOfVertex; int[] ind = lm.indices; //ちゃんと正しくデータが入っているかチェック if (vert == null) { return(new LineMeshData()); } int count = vert.Length; if (count == 0) { return(new LineMeshData()); } bool isCorrectContents = true; if (colorE != null) { isCorrectContents &= vert.Length == colorE.Length; } else { colorE = new Color[count]; for (int i = 0; i < count; i++) { colorE [i] = DefaultColor; } } if (colorV != null) { isCorrectContents &= vert.Length == colorV.Length; } else { colorV = new Color[count]; for (int i = 0; i < count; i++) { colorV [i] = DefaultColor; } } if (!isCorrectContents) { Debug.Assert(false, "ラインデータが異常です"); return(new LineMeshData()); } //メッシュを作成する // エッジメッシュを作成 List <LineMeshData> meshList = new List <LineMeshData> (); for (int i = 0; i < ind.Length; i += 2) { int i0 = ind [i]; int i1 = ind [i + 1]; meshList.Add(CreateEdge(vert [i0], vert [i1], colorE[i0], colorE[i1], lm.width, lm.normalVector)); } // バーテックスメッシュを作成 for (int i = 0; i < vert.Length; i++) { meshList.Add(CreateVertex(vert[i], colorV[i], lm.vertexSize, lm.normalVector)); } // メッシュを統合 return(LineMeshData.Combine(meshList)); }