Пример #1
0
 public void AddEdge(NavmeshEdge edge)
 {
     for (int i = 0; i < edges.Length; i++){
         if (edges[i] == null){
             edges[i] = edge;
             return;
         } else if (i == edges.Length - 1){
             Debug.LogError("More than 10 NavmeshEdges connected to one NavmeshVertex!");
         }
     }
 }
Пример #2
0
    public static NavmeshPolygon Create(NavmeshEdge[] edges)
    {
        GameObject navmeshPolygonGO = new GameObject("Navmesh Polygon");
        navmeshPolygonGO.tag = "NavmeshPolygon";
        navmeshPolygonGO.AddComponent("NavmeshPolygon");
        NavmeshPolygon navmeshPolygon = (NavmeshPolygon)navmeshPolygonGO.GetComponent("NavmeshPolygon");

        navmeshPolygon.edges = edges;

        foreach (NavmeshEdge edge in edges){
            edge.AddPolygon(navmeshPolygon);
        }

        navmeshPolygon.ResetPosition();

        return navmeshPolygon;
    }
 private static void CreatePolygon()
 {
     if (edgeSelection.Count < 3){
         Debug.Log("Select at least 3 Navmesh Vertices (by using the Select Navmesh Vertex command) before creating the Navmesh Polygon!");
         return;
     } else {
         NavmeshEdge[] edges = new NavmeshEdge[edgeSelection.Count];
         for (int i = 0; i < edgeSelection.Count; i++){
             edges[i] = (NavmeshEdge)edgeSelection[i];
             if (edges[i] == null){
                 Debug.LogError("Invalid selection for nav mesh creation!");
             }
         }
         NavmeshPolygon.Create(edges);
         foreach (NavmeshEdge edge in edgeSelection){
             edge.SetActivated(false);
         }
     }
 }