Ejemplo n.º 1
0
    public void CompleteEdge(VoronoiNode node)
    {
        if (!node.hasChildren())
        {
            return;
        }
        VoronoiEdgeNode edge   = (VoronoiEdgeNode)node;
        float           height = Camera.main.orthographicSize;
        float           width  = height * Camera.main.aspect;
        float           max;

        if (edge.mDirection.x > 0.0f)
        {
            max = Mathf.Max(width, edge.mStartVertex.x);
        }
        else
        {
            max = Mathf.Min(-width, edge.mStartVertex.x);
        }

        Vector2 endVertex = new Vector2(max, max * edge.slope + edge.yIntercept);

        edge.mEndVertex = endVertex;

        VoronoiEdge newRenderEdge = Instantiate(voronoiEdgePrefab, new Vector2(), Quaternion.identity).GetComponent <VoronoiEdge>();

        newRenderEdge.SetPosition(edge.mStartVertex, edge.mEndVertex);
        edges.Add(newRenderEdge);

        CompleteEdge(node.mLeft);
        CompleteEdge(node.mRight);
    }