View Javadoc

1   package cz.cuni.amis.pogamut.ut2004.agent.navigation.astar;
2   
3   import java.util.ArrayList;
4   import java.util.Collection;
5   import java.util.List;
6   
7   import cz.cuni.amis.pogamut.base.agent.IObservingAgent;
8   import cz.cuni.amis.pogamut.base.agent.module.SensorModule;
9   import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPoint;
10  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointNeighbourLink;
11  import cz.cuni.amis.utils.astar.AStarMap;
12  import cz.cuni.amis.utils.maps.LazyMap;
13  
14  public class UT2004AStarMap extends SensorModule<IObservingAgent> implements AStarMap<NavPoint> {
15  
16  	private LazyMap<NavPoint, List<NavPoint>> neighbours = new LazyMap<NavPoint, List<NavPoint>>() {
17  
18  		@Override
19  		protected List<NavPoint> create(NavPoint key) {
20  			List<NavPoint> list = new ArrayList<NavPoint>(key.getOutgoingEdges().size());
21  			for (NavPointNeighbourLink link : key.getOutgoingEdges().values()) {
22  				list.add(link.getToNavPoint());
23  			}
24  			return list;
25  		}
26  		
27  	};
28  	
29  	public UT2004AStarMap(IObservingAgent agent) {
30  		super(agent);
31  	}
32  
33  	@Override
34  	protected void cleanUp() {
35  		super.cleanUp();
36  		neighbours.clear();
37  	}
38  	
39  	@Override
40  	public int getEdgeCost(NavPoint nodeFrom, NavPoint nodeTo) {
41  		return (int) nodeTo.getLocation().getDistance(nodeFrom.getLocation());		
42  	}
43  
44  	@Override
45  	public Collection<NavPoint> getNodeNeighbours(NavPoint node) {
46  		return neighbours.get(node);		
47  	}
48  
49  	@Override
50  	public int getNodeCost(NavPoint node) {
51  		return 0;
52  	}
53  
54  }