コード例 #1
0
    void Start()
    {
        angle = angle / 57;//convertimos a radianes

        //Buscamos los nodos del grafo
        Node[] nodes = graphComponent.graph.nodes;

        //obstaculos
        GameObject[] obstacles = GameObject.FindGameObjectsWithTag("Obstacle");
        obstaclesData = new obstacle_data[obstacles.Length];

        for (int k = 0; k < obstacles.Length; k++)
        {
            obstaclesData[k] = obstacles[k].GetComponent <obstacle_data>();
        }

        // CREAMOS UN ARREGLO CON LOS NODOS CON VALOR DE CALIDAD PARA CUBRIRSE

        CoverNode[] coverNodesArray = new CoverNode[nodes.Length];

        float coverQuality;

        for (int i = 0; i < nodes.Length; i++)
        {
            coverQuality       = GetCoverQuality(nodes[i], iterations);
            coverNodesArray[i] = new CoverNode(nodes[i], coverQuality);
        }

        // ordenamos por calidad descendentemente
        coverNodesArray = coverNodesArray.OrderBy(node => - node.coverQuality).ToArray();

        // tomamos solo los primeros 10
        coverNodesArray = coverNodesArray.Take(30).ToArray();

        // agregamos todos los nodos a la lista que usaran los componentes que lo necesiten
        // por eso usamos una lista para que no de problemas el tiempo de update, start
        foreach (var node in coverNodesArray)
        {
            coverNodes.Add(node);
        }

        //Debugging
        // foreach(var node in coverNodes){
        //     Debug.Log(node.coverQuality);
        //     node.node.DrawTriangle(10f);
        // }
    }