示例#1
0
    //生成整个轨道模型
    public void CreateTrailer(GlobalVaribles.Trailer_Para trailer_Para)
    {
        GameObject trailer     = CreateEmpty(trailer_Para.trailerName);
        GameObject in_trailer  = new GameObject("in_trailer");
        GameObject out_trailer = new GameObject("out_trailer");

        in_trailer.transform.parent  = trailer.transform;
        out_trailer.transform.parent = trailer.transform;
        //创建内轨道
        //曲线
        GameObject CurveGroup_in = new GameObject("CurveGroup_in");

        CurveGroup_in.transform.parent = in_trailer.transform;
        for (int i = 0; i < GlobalVaribles.in_curve_Para_list.Count; i++)
        {
            GameObject curve = CreateModel.CreateCurve(GlobalVaribles.in_curve_Para_list[i]);
            curve.transform.parent = CurveGroup_in.transform;
        }
        //直线组
        GameObject LineGroup_in = new GameObject("LineGroup_in");

        LineGroup_in.transform.parent = in_trailer.transform;
        for (int i = 0; i < GlobalVaribles.in_line_Para_list.Count; i++)
        {
            GameObject cube = CreateModel.CreateLine(GlobalVaribles.in_line_Para_list[i]);
            cube.transform.parent = LineGroup_in.transform;
        }
        //创建外轨道
        //曲线组
        GameObject CurveGroup_out = new GameObject("CurveGroup_out");

        CurveGroup_out.transform.parent = out_trailer.transform;
        for (int i = 0; i < GlobalVaribles.out_curve_Para_list.Count; i++)
        {
            GameObject curve = CreateModel.CreateCurve(GlobalVaribles.out_curve_Para_list[i]);
            curve.transform.parent = CurveGroup_out.transform;
        }
        //直线
        GameObject LineGroup_out = new GameObject("LineGroup_out");

        LineGroup_out.transform.parent = out_trailer.transform;
        for (int i = 0; i < GlobalVaribles.out_line_Para_list.Count; i++)
        {
            GameObject cube = CreateModel.CreateLine(GlobalVaribles.out_line_Para_list[i]);
            cube.transform.parent = LineGroup_out.transform;
        }

        //ModelTool.CreatePrefabObj(trailer, "Trailer");
    }
示例#2
0
    //生成一个轨道图的对象
    public static TrailerGraph CreateTrailer(GlobalVaribles.Trailer_Para trailer_Para, List <Edge> edges, List <Vertex> vertexes)
    {
        //生成轨道对应的图
        TrailerGraph trailerGraph = new TrailerGraph(vertexes.Count);

        trailerGraph.numVertex = vertexes.Count;
        //给点赋值(坐标)
        for (int i = 0; i < vertexes.Count; i++)
        {
            trailerGraph.vertexes[i] = new Vertex(vertexes[i].index, vertexes[i].data, vertexes[i].vertexPos);
        }
        //给边赋值(边的两点序号、边的种类(直还是曲)、边长
        for (int i = 0; i < vertexes.Count; i++)
        {
            trailerGraph.AddEdge(i, i, LineType.Straight, 0, new Vector3(0, 0, 0));
        }
        for (int i = 0; i < edges.Count; i++)
        {
            trailerGraph.AddEdge(edges[i]);
        }
        trailerGraph.curveRadius = (trailer_Para.inCurveRadius + trailer_Para.outCurveRadius) / 2;

        trailerGraph.distMap = new float[trailerGraph.numVertex, trailerGraph.numVertex];
        trailerGraph.path    = new int[trailerGraph.numVertex, trailerGraph.numVertex];
        trailerGraph.pathMap = new PathData[trailerGraph.numVertex, trailerGraph.numVertex];
        for (int i = 0; i < trailerGraph.numVertex; i++)//必须这样初始化
        {
            for (int j = 0; j < trailerGraph.numVertex; j++)
            {
                trailerGraph.pathMap[i, j] = new PathData();
            }
        }
        //根据图来初始化最短路径
        trailerGraph.floyd();
        trailerGraph.getAllPathList();
        return(trailerGraph);
    }