//生成整个轨道模型 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"); }
//生成一个轨道图的对象 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); }