public Vector3 GetVertexOnClick(Vector3 position) { if (triangluator == null) { triangluator = new Triangulator(); } Vector3 V = transform.InverseTransformPoint(new Vector3(position.x, position.y, 1.0f)); VertexHandle VertHand = VertexHandleUtility.AddToList(V, VertexHandleUtility.VertexList.Count); VertHand.CorrectForTransfrom(transform.position); GenerateMesh(); return(V); }
// Start is called before the first frame update void Start() { int i = 0; foreach (Vector3 vertex in meshFilter.mesh.vertices) { if (!vertexHandleDictionary.ContainsKey(vertex)) { VertexHandle vertexHandle = Instantiate(vertexHandlePrefab, meshFilter.transform.TransformPoint(vertex), Quaternion.identity, transform); vertexHandle.vertexIndices.Add(i); vertexHandle.meshFilter = meshFilter; vertexHandleDictionary.Add(vertex, vertexHandle); } else { vertexHandleDictionary[vertex].vertexIndices.Add(i); } i++; } for (i = 0; i < meshFilter.mesh.triangles.Length; i += 3) { Vector3 point1 = meshFilter.mesh.vertices[meshFilter.mesh.triangles[i]]; Vector3 point2 = meshFilter.mesh.vertices[meshFilter.mesh.triangles[i + 1]]; Vector3 point3 = meshFilter.mesh.vertices[meshFilter.mesh.triangles[i + 2]]; Vector3 midpoint1 = Vector3.Lerp(point1, point2, 0.5f); Vector3 midpoint2 = Vector3.Lerp(point2, point3, 0.5f); Vector3 midpoint3 = Vector3.Lerp(point3, point1, 0.5f); if (!midpointHandleDictionary.ContainsKey(midpoint1)) { //MidpointHandle midpointHandle = Instantiate(midpointHandlePrefab,meshFilter.transform.TransformPoint(vertex),Quaternion.identity,transform); //midpointHandle.midpointDictionary; //midpointHandle.meshFilter = meshFilter; //vertexHandleDictionary.Add(vertex,vertexHandle); } else { //vertexHandleDictionary[vertex].vertexIndices.Add(i); } Instantiate(midpointHandlePrefab, meshFilter.transform.TransformPoint(midpoint1), Quaternion.identity); Instantiate(midpointHandlePrefab, meshFilter.transform.TransformPoint(midpoint2), Quaternion.identity); Instantiate(midpointHandlePrefab, meshFilter.transform.TransformPoint(midpoint3), Quaternion.identity); } }
public static VertexHandle AddToList(VertexHandle inHandle) { vertexList.Add(inHandle); return(inHandle); }