public void BuildTetra() { tetrahedrons = _manager.GetTetrahedron(); vertices = _manager.GetMesh().Vertices; print("BuildTetraBuildTetraBuildTetraBuildTetra" + tetrahedrons.Count); foreach (var tetra in tetrahedrons) { Vector3 v0 = (Vector3)vertices[tetra.Vertex0].Position; Vector3 v1 = (Vector3)vertices[tetra.Vertex1].Position; Vector3 v2 = (Vector3)vertices[tetra.Vertex2].Position; Vector3 v3 = (Vector3)vertices[tetra.Vertex3].Position; v0 = transform.TransformPoint(v0); v1 = transform.TransformPoint(v1); v2 = transform.TransformPoint(v2); v3 = transform.TransformPoint(v3); CreateMesh(v0, v1, v2, v3); } }
public void ChaseMovement() { foreach (var tetra in _manager.GetTetrahedron()) { Vector3 origin = (Vector3)_manager.GetMesh().Vertices[tetra.Vertex0].Position; _distance = _MoveDistance.magnitude * 0.1f; //next _manager.GetMesh().Vertices[tetra.Vertex1].Position = (_manager.GetMesh().Vertices[tetra.Vertex0].Position - _manager.GetMesh().Vertices[tetra.Vertex1].Position) * _distance + _manager.GetMesh().Vertices[tetra.Vertex1].Position; _manager.GetMesh().Vertices[tetra.Vertex2].Position = (_manager.GetMesh().Vertices[tetra.Vertex0].Position - _manager.GetMesh().Vertices[tetra.Vertex2].Position) * _distance + _manager.GetMesh().Vertices[tetra.Vertex2].Position; _manager.GetMesh().Vertices[tetra.Vertex3].Position = (_manager.GetMesh().Vertices[tetra.Vertex0].Position - _manager.GetMesh().Vertices[tetra.Vertex3].Position) * _distance + _manager.GetMesh().Vertices[tetra.Vertex3].Position; } }
public void BuildTensegrity() { if (structures == null) { structures = new List <TetrahedronType> (); } var tetrahedrons = _manager.GetTetrahedron(); var verts = _manager.GetMesh().Vertices; if (tetrahedrons.Count == structures.Count) { return; } int startfrom = structures.Count; var tetra = tetrahedrons [startfrom]; var p0 = (Vector3)verts [tetra.Vertex0].Position; var p1 = (Vector3)verts [tetra.Vertex1].Position; var p2 = (Vector3)verts [tetra.Vertex2].Position; var p3 = (Vector3)verts [tetra.Vertex3].Position; p0 = transform.TransformPoint(p0); p1 = transform.TransformPoint(p1); p2 = transform.TransformPoint(p2); p3 = transform.TransformPoint(p3); var cen = (p0 + p1 + p2 + p3) / 4f; var tetratype = Instantiate(_type, transform); tetratype.transform.position = cen; p0 = tetratype.transform.InverseTransformPoint(p0); p1 = tetratype.transform.InverseTransformPoint(p1); p2 = tetratype.transform.InverseTransformPoint(p2); p3 = tetratype.transform.InverseTransformPoint(p3); tetratype.SetupTetraPoints(new Vector3[] { p0, p1, p2, p3 }); tetratype.SetupStructure(); structures.Add(tetratype); tetratype.name = "tetra_" + startfrom; }
public void GetInstantPoint() { var tetrahedrons = _growthManager.GetTetrahedron(); var verts = _growthManager.GetMesh().Vertices; foreach (var tetra in tetrahedrons) { var p0 = (Vector3)verts[tetra.Vertex0].Position; var p1 = (Vector3)verts[tetra.Vertex1].Position; var p2 = (Vector3)verts[tetra.Vertex2].Position; var p3 = (Vector3)verts[tetra.Vertex3].Position; allPoint.Add(p0); allPoint.Add(p1); allPoint.Add(p2); allPoint.Add(p3); } }
public void GrowTensegrityWithTwoType() { if (structuresA == null) { structuresA = new List <TetrahedronTypeA>(); } if (structuresB == null) { structuresB = new List <TetrahedronTypeB>(); } var tetrahedrons = _manager.GetTetrahedron(); var verts = _manager.GetMesh().Vertices; if (tetrahedrons.Count == structuresA.Count + structuresB.Count) { return; } int index = 0; for (int i = 0; i < tetrahedrons.Count; i++) { var tetra = tetrahedrons[i]; if (i % 2 == 0) { var tetratype = BuildTensegrityTypeA(tetra, verts); tetratype.name = "tetra_A_" + i; structuresA.Add(tetratype); } else { var tetratype = BuildTensegrityTypeB(tetra, verts); structuresB.Add(tetratype); tetratype.name = "tetra_B_" + i; } index++; } }