private string StartSearchAsync(string point1, string point2)
    {
        SearchTypeDropdown.interactable = false;
        Point1InputField.interactable   = false;
        Point2InputField.interactable   = false;

        StartPoint = GameObject.Find(point1).GetComponent <Point>();
        EndPoint   = GameObject.Find(point2).GetComponent <Point>();

        //Set the default settings to start
        foreach (var path in paths)
        {
            path.ResetToDefault();
        }

        foreach (var path in EndPoint.Paths)
        {
            if (path.Type != MMPath.PathType.OneWay)
            {
                path.Type = MMPath.PathType.OneWay;
                if (EndPoint == path.PointA)
                {
                    path.OneWayDirection = MMPath.OneWayMode.BToA;
                }
                else
                {
                    path.OneWayDirection = MMPath.OneWayMode.AToB;
                }
            }
        }

        var searchType = SearchTypeDropdown.value;

        switch (searchType)
        {
        case 0:
            diijkstraSearch.Setup(StartPoint, EndPoint);
            diijkstraSearch.BeginAsync();
            break;

        case 1:
            aStarSeach.Setup(StartPoint, EndPoint);
            aStarSeach.BeginAsync();
            break;
        }

        return(CurrentDistanceToStartValueText.text);
    }