// Find a path between two vertexes public void FindPath(Vertex <string> FromVertex, Vertex <string> ToVertext) { Debug.LogWarning("FromVertex Data: " + FromVertex.Data); Debug.LogWarning("ToVertex Data: " + ToVertext.Data); videoQueue.Clear(); Graph <string> pathGraph = GraphAlgorithms.DijkstrasAlgorithm <string>(videoGraph, FromVertex); var endVertex = pathGraph.GetVertex(ToVertext.Data); pathQueue.Clear(); pathQueue.Enqueue(ToVertext.Data); string fromVertexID = FromVertex.Data; string nextVertexID = null; var nextVertex = endVertex; while (nextVertexID != fromVertexID) { nextVertexID = nextVertex.IncidentEdges[0].FromVertex.Data; if (nextVertexID == nextVertex.Data) { nextVertexID = nextVertex.IncidentEdges[1].FromVertex.Data; } pathQueue.Enqueue(nextVertexID); Debug.LogWarning("next vertex: " + nextVertexID); nextVertex = pathGraph.GetVertex(nextVertexID); } var pathQueueSize = pathQueue.Count; List <string>[] tmpList = new List <string> [pathQueueSize]; var pathlist = pathQueue.ToList(); for (int i = pathlist.Count - 1; i > 0; i--) { Debug.LogWarning("path list i: " + pathlist[i]); var list0 = databaseControl.GetVideoList(pathlist[i]); Debug.LogWarning("path list i-1: " + pathlist[i - 1]); var list1 = databaseControl.GetVideoList(pathlist[i - 1]); var commons = list0.Intersect(list1); Debug.LogWarning(commons.FirstOrDefault()); Debug.LogWarning("videoQueue size: " + videoQueue.Count); string playInfo = databaseControl.GetPlayInfo(pathlist[i], pathlist[i - 1], commons.FirstOrDefault()); videoQueue.Enqueue(playInfo); } reviewMode = false; StopAllCoroutines(); currentFrameList.Clear(); StartCoroutine(SetLoadFramesForNavigation(videoQueue)); playNavigationMode = true; }