Ejemplo n.º 1
0
        private void OffRoadToOffRoad(Point startPoint, Point endPoint, Reusables reusables)
        {
            SearchResult searchResult;
            Point        midPointOne;
            Point        midPointTwo;

            AStarOffRoad AStarOffRoad = new AStarOffRoad();

            drivingNodeList = AStarOffRoad.Go(startPoint, endPoint, false, out searchResult, out midPointOne, vehicle, false, reusables);

            if (searchResult == SearchResult.RoadFound)
            {
                //We found a road, lets re optomise our search looking for that specific point
                drivingNodeList = AStarOffRoad.Go(startPoint, midPointOne, false, out searchResult, out midPointOne, vehicle, false, reusables);


                List <DrivingNode> drivingNodeListThree = AStarOffRoad.Go(endPoint, startPoint, false, out searchResult, out midPointTwo, vehicle, true, reusables);

                if (searchResult == SearchResult.RoadFound)
                {
                    //We found a road, lets re optomise our search looking for that specific point
                    drivingNodeListThree = AStarOffRoad.Go(endPoint, midPointTwo, false, out searchResult, out midPointTwo, vehicle, true, reusables);


                    AStarOnRoad        AStarOnRoad        = new AStarOnRoad();
                    List <DrivingNode> drivingNodeListTwo = AStarOnRoad.Go(midPointOne, midPointTwo, reusables);

                    if (drivingNodeListTwo.Count > 0)
                    {
                        drivingNodeList.RemoveAt(0);  //Need to remove the first one so theres no double up
                    }

                    drivingNodeListThree.Reverse();
                    drivingNodeListThree.AddRange(drivingNodeListTwo);
                    drivingNodeListThree.AddRange(drivingNodeList);

                    drivingNodeList = drivingNodeListThree;
                }
                else if (searchResult == SearchResult.EndFound)
                {
                    //We found it in list three
                    drivingNodeListThree.Reverse();
                    drivingNodeListThree.RemoveAt(drivingNodeListThree.Count - 1);
                    drivingNodeList = drivingNodeListThree;
                }
            }

            //  AddDebug(drivingNodeList);
        }
Ejemplo n.º 2
0
        private void OnRoadToOffRoad(Point startPoint, Point endPoint, Reusables reusables)
        {
            SearchResult searchResult;
            Point        midPoint;

            AStarOffRoad AStarOffRoad = new AStarOffRoad();

            //We do this backwards
            drivingNodeList = AStarOffRoad.Go(endPoint, startPoint, false, out searchResult, out midPoint, vehicle, true, reusables);

            if (searchResult == SearchResult.RoadFound)
            {
                //Lets redo our offroad to onroad search as our path is not optimal at all as we were trying to head to a different point
                drivingNodeList = AStarOffRoad.Go(endPoint, midPoint, false, out searchResult, out midPoint, vehicle, true, reusables);

                drivingNodeList.Reverse();
                AStarOnRoad        AStarOnRoad        = new AStarOnRoad();
                List <DrivingNode> drivingNodeListTwo = AStarOnRoad.Go(startPoint, midPoint, reusables);
                drivingNodeList.AddRange(drivingNodeListTwo);
            }
        }
Ejemplo n.º 3
0
        private void OffRoadToOnRoad(Point startPoint, Point endPoint, Reusables reusables)
        {
            SearchResult searchResult;
            Point        midPoint;

            AStarOffRoad AStarOffRoad = new AStarOffRoad();

            drivingNodeList = AStarOffRoad.Go(startPoint, endPoint, false, out searchResult, out midPoint, vehicle, false, reusables);

            if (searchResult == SearchResult.RoadFound)
            {
                AStarOnRoad        AStarOnRoad        = new AStarOnRoad();
                List <DrivingNode> drivingNodeListTwo = AStarOnRoad.Go(midPoint, endPoint, reusables);
                drivingNodeListTwo.AddRange(drivingNodeList);
                drivingNodeList = drivingNodeListTwo;
            }
        }