/* * public bool RoadToTravel(int Destination, out int StartingElement, out VillageRoadSegment RoadToTravel) * { * foreach(ConnectionInfo road in Connections) * { * if(Destination == road.VillageNodeID) * { * RoadToTravel = road.Road; * StartingElement = GetClosestIndex(transform.position, road.Road); * return true; * } * } * StartingElement = -1; * RoadToTravel = null; * return false; * } * * public int findConnectionCost(int ID) * { * foreach(ConnectionInfo info in Connections) * { * if(info.VillageNodeID == ID) * { * return info.Cost; * } * } * return -1; * } */ public int GetClosestIndex(Vector3 Position, VillageRoadSegment seg) { int bestSoFar = -1; float bestDistSoFar = float.MaxValue; //print(seg.GetComponent<LineRenderer>()); Vector3[] positions = new Vector3[seg.GetComponent <LineRenderer>().numPositions]; seg.GetComponent <LineRenderer>().GetPositions(positions); for (int i = 0; i < positions.Length; ++i) { if (bestDistSoFar > Vector3.Distance(Position, positions[i])) { bestSoFar = i; bestDistSoFar = Vector3.Distance(Position, positions[i]); } } return(bestSoFar); }
public void UpdateConnectionGraph(VillageRoadSegment road) { ConnectionGraph[road.connectedVillages[0].ID][road.connectedVillages[1].ID] = road.Cost; ConnectionGraph[road.connectedVillages[1].ID][road.connectedVillages[0].ID] = road.Cost; }