/** Removes the specified graph from the #graphs array and Destroys it in a safe manner.
* To avoid changing graph indices for the other graphs, the graph is simply nulled in the array instead
* of actually removing it from the array.
* The empty position will be reused if a new graph is added.
*
* \returns True if the graph was sucessfully removed (i.e it did exist in the #graphs array). False otherwise.
*
*
* \version Changed in 3.2.5 to call SafeOnDestroy before removing
* and nulling it in the array instead of removing the element completely in the #graphs array.
*
*/
public bool RemoveGraph(NavGraph graph)
{
// Make sure all graph updates and other callbacks are done
active.FlushWorkItems(false, true);
// Make sure the pathfinding threads are stopped
active.BlockUntilPathQueueBlocked();
// //Safe OnDestroy is called since there is a risk that the pathfinding is searching through the graph right now,
// //and if we don't wait until the search has completed we could end up with evil NullReferenceExceptions
graph.OnDestroy();
int i = System.Array.IndexOf(graphs, graph);
if (i == -1)
{
return(false);
}
graphs[i] = null;
UpdateShortcuts();
return(true);
}