コード例 #1
0
    private void UseTestRoute()
    {
        int i = 0;

        foreach (var node in TestRoad.GSDSpline.mNodes)
        {
            var inter = new PathMapBuilder.IntersectionPoint();
            inter.Node1      = node;
            inter.bIsSpawner = node.bIsEndPoint;
            if (i > 0)
            {
                var con = new Connection();
                con.Nodes.Add(node);
                con.Nodes.Add(TestRoad.GSDSpline.mNodes[i - 1]);
                con.Spline = TestRoad.GSDSpline;
                con.StartEndPoint.Add(Route[i - 1]);
                con.StartEndPoint.Add(inter);
                inter.Roads.Add(con);
                Route[i - 1].Roads.Add(con);
            }
            Route.Add(inter);
            i++;
        }
        if (RoadManager.DebubMode)
        {
            Debug.Log("Route set: " + Route.Count);
        }
        ConvertRouteToPath();
    }
コード例 #2
0
 public static void AddRoad(Connection road)
 {
     if (!Roads.Contains(road))
     {
         Roads.Add(road);
     }
 }
コード例 #3
0
    public void ConvertRouteToPath()
    {
        for (int j = 1; j < Route.Count; j++)
        {
            PathData path = new PathData();

            Node startNode = new Node();
            startNode.Pos            = Route[j - 1].Node1.pos;
            startNode.IsIntersection = !Route[j - 1].bIsSpawner;
            path.StartNode           = startNode;

            Node endNode = new Node();
            endNode.Pos = Route[j].Node1.pos;
            startNode.IsIntersection = !Route[j].bIsSpawner;
            path.EndNode             = endNode;

            Connection con = null;
            foreach (var road in Route[j - 1].Roads)
            {
                if (road.StartEndPoint.Contains(Route[j]))
                {
                    con = road;
                    break;
                }
            }
            if (con == null)
            {
                if (RoadManager.DebubMode)
                {
                    Debug.LogError("ConvertRouteToPath: Connection not found!");
                }
                return;
            }

            path.Spline             = con.Spline;
            path.RoadData           = con.RoadData;
            path.RoadData.NrOfLanes = path.Spline.tRoad.opt_Lanes / 2;
            path.RoadData.MaxSpeed  = RoadManager.BaseMaxSpeed + RoadManager.MaxSpeedAddedPerLane * path.RoadData.NrOfLanes;
            if (con.StartEndPoint[0] == Route[j - 1])
            {
                path.StartF = con.GetStartF();
                path.EndF   = con.GetEndF();
            }
            else
            {
                path.StartF = con.GetEndF();
                path.EndF   = con.GetStartF();
            }
            path.Length = con.GetLength();

            if (path.StartF < path.EndF)
            {
                path.Direction = 1;
            }
            else
            {
                path.Direction = -1;
            }

            Path.Add(path);
        }
    }