// Triangles for normal cube void Triangles(int index, int vertIndex) { triangles[index + 0] = new MeshTri { triangle = 3 + vertIndex }; triangles[index + 1] = new MeshTri { triangle = 1 + vertIndex }; triangles[index + 2] = new MeshTri { triangle = 0 + vertIndex }; triangles[index + 3] = new MeshTri { triangle = 3 + vertIndex }; triangles[index + 4] = new MeshTri { triangle = 2 + vertIndex }; triangles[index + 5] = new MeshTri { triangle = 1 + vertIndex }; }
public GameObject CreateMeshTriObject(MeshTri mt) { //GameObject s = GameObject.CreatePrimitive (PrimitiveType.Sphere); //s.transform.position = mt.CenterLocation; //s.transform.localScale = Vector3.one * mt.CenterRadius; GameObject go = new GameObject(); go.name = "energy tri"; go.transform.parent = this.transform; go.transform.position = mt.CenterLocation; go.AddComponent <MeshFilter> ().mesh = mt.GenerateMesh(); go.AddComponent <MeshRenderer> ().material = this.MaterialForLines; var ft = go.AddComponent <FlowTriangle> (); ft.NodeA = mt.A; ft.NodeB = mt.B; ft.NodeC = mt.C; return(go); }
void PerformGenerate() { this.SetupUniqueIndices(); var verts = GameObject.FindObjectsOfType <FlowVertexNode> (); for (int iv = 0; iv < verts.Length; iv++) { var center = verts[iv]; var nearish = verts .Where(k => (k.Location - center.Location).magnitude < 2.0) .OrderBy(k => (k.Location - center.Location).magnitude) .Take(20).ToList(); for (int ik = 0; ik < nearish.Count; ik++) { if (center.UniqueIndex < nearish[ik].UniqueIndex) { //CreateLineObjects(this.transform, center, // nearish[ik]); } for (int ij = 0; ij < nearish.Count; ij++) { var a = center; var b = nearish[ik]; var c = nearish[ij]; if ((a.UniqueIndex < b.UniqueIndex) && (a.UniqueIndex < c.UniqueIndex) && (b.UniqueIndex < c.UniqueIndex)) { MeshTri tri = new MeshTri(a, b, c); this.MyTris.Add(tri); } } } } if (true) // delauny simplification: { int mi = 0; while (mi < this.MyTris.Count) { var t = this.MyTris[mi]; bool isValid = true; for (int vi = 0; (vi < verts.Length) && isValid; vi++) { var iv = verts[vi]; if (!t.ReferencesVertex(iv)) { if (t.CenterSphereContainsPoint(iv.Location)) { isValid = false; } } } if (isValid) { mi++; } else { this.MyTris.RemoveAt(mi); } } } foreach (var m in this.MyTris) { this.CreateMeshTriObject(m); } }
void addTriangle(MeshTri tri) { tris.Add(tri); }