1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package cz.cuni.amis.pogamut.ut2004.agent.navigation.navmesh;
18
19 import cz.cuni.amis.pogamut.base3d.worldview.object.ILocated;
20 import cz.cuni.amis.pogamut.base3d.worldview.object.Location;
21 import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
22 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPoint;
23 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointNeighbourLink;
24 import java.util.ArrayList;
25 import java.util.List;
26 import java.util.Map;
27 import math.geom3d.Point3D;
28
29
30
31
32
33
34 public class OffMeshPoint implements ILocated, INavMeshAtom, java.io.Serializable {
35
36 private UnrealId navpointId = null;
37 private int pId = -1;
38 private ArrayList<OffMeshEdge> outgoingEdges = new ArrayList<OffMeshEdge>();
39 private ArrayList<OffMeshEdge> incomingEdges = new ArrayList<OffMeshEdge>();
40 private Location location;
41
42 public OffMeshPoint(NavPoint navpoint, int pId) {
43 this.navpointId = navpoint.getId();
44 this.pId = pId;
45 this.location = navpoint.getLocation();
46 }
47
48 public UnrealId getNavPointId() {
49 return navpointId;
50 }
51
52 public int getPId() {
53 return pId;
54 }
55
56 public ArrayList<OffMeshEdge> getOutgoingEdges() {
57 return outgoingEdges;
58 }
59
60 public ArrayList<OffMeshEdge> getIncomingEdges() {
61 return incomingEdges;
62 }
63
64 @Override
65 public Location getLocation() {
66 return location;
67 }
68
69
70
71
72
73 @Override
74 public List<INavMeshAtom> getNeighbours(NavMesh mesh) {
75 List<INavMeshAtom> neighbours = new ArrayList<INavMeshAtom>();
76
77 if(pId > 0) neighbours.add(new NavMeshPolygon(pId));
78
79 for(OffMeshEdge oe : outgoingEdges) {
80 neighbours.add(oe.getTo());
81 }
82
83 return neighbours;
84 }
85
86
87
88
89
90
91 @Override
92 public boolean equals(INavMeshAtom atom) {
93 if(atom.getClass() == OffMeshPoint.class) {
94 OffMeshPoint op = (OffMeshPoint) atom;
95 return (op.navpointId.getStringId().equals(this.navpointId.getStringId()));
96 }
97 else return false;
98 }
99
100 }