예제 #1
0
    /// <summary>
    /// Expands a node.
    /// </summary>
    /// <param name='node'>
    /// Node to be expanded
    /// </param>
    private void expandNode(ARAstarNode node)
    {
        nodesExpanded++;
        Open.Remove(node.action.state);

        if (node.g > node.rhs)
        {
            node.g = node.rhs;
            Close.Insert(node);
        }
        else
        {
            node.g = Mathf.Infinity;
            UpdateVertex(node);
        }

        generateNodeSuccessors(ref node);

        if (Visited.nodeForState(stateReached).h > node.h)
        {
            stateReached = node.action.state;
        }

        if (!usingHeap)
        {
            Open.Sort();
        }

        if (node == null)
        {
            Status = PathStatus.NoPath;
        }
    }
예제 #2
0
    public void MoveToOpen(ref OpenContainer open)
    {
        List <ARAstarNode> templist = new List <ARAstarNode> ();

        templist = incons.Values.ToList();
        foreach (ARAstarNode node in templist)
        {
            open.Insert(node);
            incons.Remove(node.action.state);
        }
        open.Sort();
    }
예제 #3
0
 public void MoveToOpen(ref OpenContainer open)
 {
     List<ARAstarNode> templist = new List<ARAstarNode> ();
     templist = incons.Values.ToList ();
     foreach (ARAstarNode node in templist) {
         open.Insert (node);
         incons.Remove (node.action.state);
     }
     open.Sort ();
 }