// Use this for initialization void Start() { nextToMeLocations = new List <string>(); FillNextoMeLocations(); BFSVisited = false; previousRoom = null; }
private List <string> BuildPath(string current, LocationDiscovery e) { List <string> path = new List <string>(); LocationDiscovery routeRoom = e; do { path.Add(routeRoom.gameObject.name); routeRoom = routeRoom.previousRoom; } while (routeRoom.gameObject.name != current); path.Reverse(); return(path); }
private List <string> BFSPathfinding(string current, string destination, List <string> discoveredRooms) { foreach (string r in discoveredRooms) { LocationDiscovery room = GameObject.Find(r).GetComponent <LocationDiscovery>(); room.visited = false; room.previousRoom = null; room.distanceToDestiny = -1; } LocationDiscovery currentRoom = GameObject.Find(current).GetComponent <LocationDiscovery>(); currentRoom.visited = true; currentRoom.distanceToDestiny = 0; currentRoom.previousRoom = null; Queue <LocationDiscovery> queueOfRooms = new Queue <LocationDiscovery>(); queueOfRooms.Enqueue(currentRoom); while (queueOfRooms.Count != 0) { LocationDiscovery E = queueOfRooms.Dequeue(); if (E.gameObject.name == destination) { return(BuildPath(current, E)); } foreach (string neighbour in E.nextToMeLocations) { LocationDiscovery neighbourLocation = GameObject.Find(neighbour).GetComponent <LocationDiscovery>(); neighbourLocation.visited = true; neighbourLocation.distanceToDestiny = E.distanceToDestiny + 1; neighbourLocation.previousRoom = E; queueOfRooms.Enqueue(neighbourLocation); } } return(null); }