// Update is called once per frame void Update() { m_MidPoint = (m_V1.position + m_V2.position + m_V3.position) / 3f; Vector3 side1 = m_V2.position - m_V1.position; Vector3 side2 = m_V3.position - m_V1.position; m_Normal = Vector3.Cross(side1, side2).normalized; //m_CrossV1Left = Vector3.Cross( m_Normal, m_V2.position - m_V1.position ).normalized; //m_CrossV1Right = Vector3.Cross( m_V3.position - m_V1.position, m_Normal).normalized; for (int i = 0; i < 6; i++) { m_Cylinders[i].transform.localScale = new Vector3(m_Radius * 2, m_Radius * 2, m_Length); } m_Cylinders [0].transform.position = m_V1.position; m_Cylinders [0].transform.LookAt(m_V2.position); m_Cylinders [1].transform.position = m_V1.position; m_Cylinders [1].transform.LookAt(m_V3.position); m_Cylinders [2].transform.position = m_V2.position; m_Cylinders [2].transform.LookAt(m_V1.position); m_Cylinders [3].transform.position = m_V2.position; m_Cylinders [3].transform.LookAt(m_V3.position); m_Cylinders [4].transform.position = m_V3.position; m_Cylinders [4].transform.LookAt(m_V1.position); m_Cylinders [5].transform.position = m_V3.position; m_Cylinders [5].transform.LookAt(m_V2.position); m_InnerTri1 = FindInnerVerts(m_V1.position, m_V2.position, m_V3.position, m_Radius, m_Length); m_InnerTri2 = FindInnerVerts(m_V2.position, m_V3.position, m_V1.position, m_Radius, m_Length); m_InnerTri3 = FindInnerVerts(m_V3.position, m_V1.position, m_V2.position, m_Radius, m_Length); //offset01 = Vector3.Distance (m_V1.position, m_InnerTri1 [3]); offset01 = (90 / m_Angle1) * (m_Radius * 1.2f); float length = (m_InnerTri1 [3] - m_InnerTri2 [4]).magnitude; m_Edges [0].transform.position = m_V1.position + ((m_V2.position - m_V1.position).normalized * offset01); m_Edges [0].transform.localScale = new Vector3(m_Radius / 2f, m_Radius / 2f, 1); m_Edges [0].transform.LookAt(m_InnerTri2[4]); m_Angle1 = Vector3.Angle(m_V1.position - m_V2.position, m_V1.position - m_V3.position); m_Angle2 = Vector3.Angle(m_V2.position - m_V1.position, m_V2.position - m_V3.position); m_Angle3 = Vector3.Angle(m_V3.position - m_V1.position, m_V3.position - m_V2.position); m_Text.text = MathExtensions.AreaOfTriangle(m_V1.position, m_V2.position, m_V3.position).ToString(); }
void Update() { if (Input.GetKeyDown(KeyCode.A)) { m_TextMeshes.Clear(); } if (m_Line == null) { m_Line = gameObject.GetComponent <LineRenderer> (); } //hax if (m_TextMeshes.Count < (m_SelectedObjects.Count * 3)) { while (m_TextMeshes.Count < (m_SelectedObjects.Count * 3)) { TextMesh newtext = new GameObject("text mesh " + m_TextMeshes.Count).AddComponent <TextMesh> (); m_TextMeshes.Add(newtext); } } textCount = 0; foreach (TextMesh t in m_TextMeshes) { t.transform.rotation = Camera.main.transform.rotation; t.transform.localScale = Vector3.one * m_Scale; t.fontSize = m_FontSize; } // If more than one vert selected if (m_SelectedObjects.Count > 1) { m_Line.enabled = true; m_Line.SetVertexCount(m_SelectedObjects.Count); for (int i = 0; i < m_SelectedObjects.Count; i++) { m_Line.SetPosition(i, m_SelectedObjects [i].transform.position); int prevIndex = (i - 1); if (prevIndex < 0) { prevIndex = m_SelectedObjects.Count - 1; } int nextIndex = (i + 1); if (nextIndex > m_SelectedObjects.Count - 1) { nextIndex = 0; } // Edge length TextMesh edgeText = GetTextMesh(); EdgeLength(edgeText, m_SelectedObjects[i].transform.position, m_SelectedObjects[nextIndex].transform.position); // Line m_Line.SetVertexCount(m_SelectedObjects.Count + 1); m_Line.SetPosition(m_SelectedObjects.Count, m_SelectedObjects [0].transform.position); // Angle Vector3 edge1 = m_SelectedObjects[i].transform.position - m_SelectedObjects[prevIndex].transform.position; Vector3 edge2 = m_SelectedObjects[i].transform.position - m_SelectedObjects[nextIndex].transform.position; float angle = Vector3.Angle(edge1, edge2); TextMesh vertext = GetTextMesh(); vertext.text = "v" + i + ": " + angle.ToString("##"); vertext.transform.position = m_SelectedObjects[i].transform.position; } // hax trianlge area float area = MathExtensions.AreaOfTriangle(m_SelectedObjects [0].transform.position, m_SelectedObjects [1].transform.position, m_SelectedObjects [2].transform.position); TextMesh areaText = GetTextMesh(); areaText.text = area.ToString("##.##"); areaText.transform.position = (m_SelectedObjects [0].transform.position + m_SelectedObjects [1].transform.position + m_SelectedObjects [2].transform.position) / 3f; for (int i = textCount + 1; i < m_TextMeshes.Count; i++) { m_TextMeshes[i].gameObject.SetActive(false); } } else { m_Line.enabled = false; m_Line.SetVertexCount(0); } }