/*
  * 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();
 }
    /*
     * getPathFromBothBiDirectionAgents method will get the final path from the two searchs depending on what agent
     *      found the connecting path
     * Parameter:	(bool)isStartBackwards tells which search found the path
     * Return:	none
     */
    void getPathFromBothBiDirectionAgents(bool isStartBackwards)
    {
        if (isStartBackwards == false)         //starting from search from the agent to the goal
        {
            getPathStartingWithForward();
        }
        else         //starting from the search fromt the goal to the agent
        {
            getPathStartingWithbackwards();
        }

        polygonFinalCount = agentToGoal.getFinalPathLength() + goalToAgent.getFinalPathLength() - 1;
        for (int count = 1; count < finalSolutionArray.Length; count++)
        {
            finalPathCost += (finalSolutionArray [count].getCenterVector() - finalSolutionArray [count - 1].getCenterVector()).magnitude;
        }
        nodesVisited = agentToGoal.getNodesVisited() + goalToAgent.getNodesVisited();
        maxQueueSize = agentToGoal.getMaxQueueSize() + goalToAgent.getMaxQueueSize();
    }