/*
     * getPathStartingWithForward method gets the final path from the agent to the connecting node found by the
     *      search from the agent to the goal then gets the final path for the goal
     * Parameter:	none
     * Return:	none
     */
    void getPathStartingWithForward()
    {
        AIPolygon[] frontPath = agentToGoal.getFinalPath();
        if (frontPath == null)
        {
            return;
        }
        AIPolygon[] backPath = goalToAgent.getFinalPathStartingWithNode(agentToGoal.getFinalPathStart());
        finalSolutionArray = new AIPolygon[frontPath.Length + backPath.Length - 1];
        int finalSolutionCounter = 0;

        for (int count = 0; count < frontPath.Length; count++, finalSolutionCounter++)
        {
            if (frontPath[count] != null)
            {
                finalSolutionArray [finalSolutionCounter] = frontPath [count];
            }
        }
        for (int count = 1; count < backPath.Length; count++, finalSolutionCounter++)
        {
            if (backPath[count] != null)
            {
                finalSolutionArray [finalSolutionCounter] = backPath [count];
            }
        }
    }
 /*
  * getPathFromBiDirectionAgent method will get the final path solution array from one of the searchs that was passed in
  * Parameter:	(AIDynBiDirBeamOpAgent) agentThatFoundPath is the agent that has found the path to its goal
  * Return:	none
  */
 void getPathFromBiDirectionAgent(AIDynBiDirBeamOpAgent agentThatFoundPath)
 {
     finalSolutionArray = agentThatFoundPath.getFinalPath();
     polygonFinalCount  = agentThatFoundPath.getFinalPathLength();
     for (int count = 1; count < finalSolutionArray.Length; count++)
     {
         finalPathCost += (finalSolutionArray [count].getCenterVector() - finalSolutionArray [count - 1].getCenterVector()).magnitude;
     }
     nodesVisited = agentThatFoundPath.getNodesVisited();
     maxQueueSize = agentThatFoundPath.getMaxQueueSize();
 }