Example #1
0
    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);
    }
Example #2
0
    // 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);
 }