1 package cz.cuni.amis.pogamut.base.agent.navigation;
2
3 /**
4 * Interface for generic path planner. PathPlanner is responsible for finding
5 * paths between two points in the map.
6 * <p><p>
7 * There are several ways how to implement this interface, eg. Dijkstra, A*,
8 * external A* from the environment, Floyd-Warshall, etc. ...
9 * <p><p>
10 * Bot programmers are able to supply their own implementation of PathPlanner,
11 * eg. for cars or flying vehicles, or path planners that aren't computing the
12 * shortest path but paths with some other property (eg. paths without
13 * jumps, movers etc.)
14 * <p><p>
15 * {@link IPathPlanner} should be independent of the bot.
16 *
17 * @author Ik
18 * @author Jimmy
19 */
20 public interface IPathPlanner<PATH_ELEMENT> {
21
22 /**
23 * Returns a future where the path planner will set the result of its computation.
24 * <p><p>
25 * Note that the {@link IPathFuture} might already contain the path (i.e., the returned path was
26 * computed inside this method or it was a precomputed result). Always examine status of the future before
27 * attaching listeners to it.
28 *
29 * @param from
30 * @param to
31 * @return
32 */
33 public IPathFuture<PATH_ELEMENT> computePath(PATH_ELEMENT from, PATH_ELEMENT to);
34
35 }