A* Pathfinding Project
4.2.1
The A* Pathfinding Project for Unity 3D
|
Node represented by a triangle. More...
Node represented by a triangle.
Public Member Functions | |
TriangleMeshNode (AstarPath astar) | |
override Vector3 | ClosestPointOnNode (Vector3 p) |
Closest point on the surface of this node to the point p. More... | |
override Vector3 | ClosestPointOnNodeXZ (Vector3 p) |
Closest point on the surface of this node when seen from above. More... | |
override bool | ContainsPoint (Vector3 p) |
Checks if point is inside the node when seen from above. More... | |
override bool | ContainsPointInGraphSpace (Int3 p) |
Checks if point is inside the node in graph space. More... | |
override void | DeserializeNode (GraphSerializationContext ctx) |
Deserializes the node data from a byte array. More... | |
override bool | GetPortal (GraphNode toNode, System.Collections.Generic.List< Vector3 > left, System.Collections.Generic.List< Vector3 > right, bool backwards) |
bool | GetPortal (GraphNode toNode, System.Collections.Generic.List< Vector3 > left, System.Collections.Generic.List< Vector3 > right, bool backwards, out int aIndex, out int bIndex) |
override Int3 | GetVertex (int i) |
Get a vertex of this node. More... | |
int | GetVertexArrayIndex (int i) |
Return a number specifying an index in the source vertex array. More... | |
override int | GetVertexCount () |
Number of corner vertices that this node has. More... | |
int | GetVertexIndex (int i) |
Return a number identifying a vertex. More... | |
Int3 | GetVertexInGraphSpace (int i) |
void | GetVertices (out Int3 v0, out Int3 v1, out Int3 v2) |
Returns all 3 vertices of this node in world space. More... | |
void | GetVerticesInGraphSpace (out Int3 v0, out Int3 v1, out Int3 v2) |
Returns all 3 vertices of this node in graph space. More... | |
override void | Open (Path path, PathNode pathNode, PathHandler handler) |
Open the node. More... | |
override Vector3 | RandomPointOnSurface () |
A random point on the surface of the node. More... | |
override void | SerializeNode (GraphSerializationContext ctx) |
Serialized the node data to a byte array. More... | |
int | SharedEdge (GraphNode other) |
Returns the edge which is shared with other. More... | |
override float | SurfaceArea () |
void | UpdatePositionFromVertices () |
Set the position of this node to the average of its 3 vertices. More... | |
override void | UpdateRecursiveG (Path path, PathNode pathNode, PathHandler handler) |
Public Member Functions inherited from MeshNode | |
override void | AddConnection (GraphNode node, uint cost) |
Add a connection from this node to the specified node. More... | |
void | AddConnection (GraphNode node, uint cost, int shapeEdge) |
Add a connection from this node to the specified node. More... | |
override void | ClearConnections (bool alsoReverse) |
Remove all connections from this node. More... | |
override bool | ContainsConnection (GraphNode node) |
Checks if this node has a connection to the specified node. More... | |
virtual bool | ContainsPoint (Int3 point) |
Checks if point is inside the node when seen from above. More... | |
override void | DeserializeReferences (GraphSerializationContext ctx) |
Used to deserialize references to other nodes e.g connections. More... | |
override void | GetConnections (System.Action< GraphNode > action) |
Calls the delegate with all connections from this node. More... | |
override int | GetGizmoHashCode () |
Hash code used for checking if the gizmos need to be updated. More... | |
override void | RemoveConnection (GraphNode node) |
Removes any connection from this node to the specified node. More... | |
override void | SerializeReferences (GraphSerializationContext ctx) |
Used to serialize references to other nodes e.g connections. More... | |
Public Member Functions inherited from GraphNode | |
virtual bool | GetPortal (GraphNode other, List< Vector3 > left, List< Vector3 > right, bool backwards) |
Add a portal from this node to the specified node. More... | |
void | SetConnectivityDirty () |
Inform the system that the node's connectivity has changed. More... | |
Static Public Member Functions | |
static INavmeshHolder | GetNavmeshHolder (uint graphIndex) |
static void | SetNavmeshHolder (int graphIndex, INavmeshHolder graph) |
Sets the internal navmesh holder for a given graph index. More... | |
Public Attributes | |
int | v0 |
Internal vertex index for the first vertex. More... | |
int | v1 |
Internal vertex index for the second vertex. More... | |
int | v2 |
Internal vertex index for the third vertex. More... | |
Public Attributes inherited from MeshNode | |
Connection [] | connections |
All connections from this node. More... | |
Public Attributes inherited from GraphNode | |
const uint | MaxGraphIndex = FlagsGraphMask >> FlagsGraphOffset |
Max number of graphs-1. More... | |
const uint | MaxHierarchicalNodeIndex = HierarchicalIndexMask >> FlagsHierarchicalIndexOffset |
Int3 | position |
Position of the node in world space. More... | |
Static Protected Attributes | |
static INavmeshHolder [] | _navmeshHolders = new INavmeshHolder[0] |
Holds INavmeshHolder references for all graph indices to be able to access them in a performant manner. More... | |
static readonly System.Object | lockObject = new System.Object() |
Used for synchronised access to the _navmeshHolders array. More... | |
Package Functions | |
Int3 | ClosestPointOnNodeXZInGraphSpace (Vector3 p) |
Closest point on the node when seen from above. More... | |
Package Functions inherited from GraphNode | |
void | Destroy () |
Destroys the node. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from MeshNode | |
MeshNode (AstarPath astar) | |
Protected Member Functions inherited from GraphNode | |
GraphNode (AstarPath astar) | |
Constructor for a graph node. More... | |
Protected Attributes inherited from GraphNode | |
uint | flags |
Bitpacked field holding several pieces of data. More... | |
Properties inherited from GraphNode | |
uint | Area [get] |
Connected component that contains the node. More... | |
bool | Destroyed [get] |
uint | Flags [get, set] |
Holds various bitpacked variables. More... | |
NavGraph | Graph [get] |
Graph which this node belongs to. More... | |
uint | GraphIndex [get, set] |
Graph which contains this node. More... | |
int | HierarchicalNodeIndex [get, set] |
Hierarchical Node that contains this node. More... | |
bool | IsHierarchicalNodeDirty [get, set] |
Some internal bookkeeping. More... | |
int | NodeIndex [get, private set] |
Internal unique index. More... | |
uint | Penalty [get, set] |
Penalty cost for walking on this node. More... | |
uint | Tag [get, set] |
Node tag. More... | |
bool | TemporaryFlag1 [get, set] |
Temporary flag for internal purposes. More... | |
bool | TemporaryFlag2 [get, set] |
Temporary flag for internal purposes. More... | |
bool | Walkable [get, set] |
True if the node is traversable. More... | |
TriangleMeshNode | ( | AstarPath | astar | ) |
|
virtual |
Closest point on the surface of this node to the point p.
Implements MeshNode.
|
virtual |
Closest point on the surface of this node when seen from above.
This is usually very similar to ClosestPointOnNode but when the node is in a slope this can be significantly different.
When the blue point in the above image is used as an argument this method call will return the green point while the ClosestPointOnNode method will return the red point.Implements MeshNode.
|
package |
Closest point on the node when seen from above.
This method is mostly for internal use as the Pathfinding.NavmeshBase.Linecast methods use it.
This method is slower than e.g ClosestPointOnNode or ClosestPointOnNodeXZ. However they do not have the same guarantees as this method has.
|
virtual |
Checks if point is inside the node when seen from above.
Note that ContainsPointInGraphSpace is faster than this method as it avoids some coordinate transformations. If you are repeatedly calling this method on many different nodes but with the same point then you should consider transforming the point first and then calling ContainsPointInGraphSpace.
Implements MeshNode.
|
virtual |
Checks if point is inside the node in graph space.
In graph space the up direction is always the Y axis so in principle we project the triangle down on the XZ plane and check if the point is inside the 2D triangle there.
Implements MeshNode.
|
virtual |
Deserializes the node data from a byte array.
Reimplemented from GraphNode.
|
static |
override bool GetPortal | ( | GraphNode | toNode, |
System.Collections.Generic.List< Vector3 > | left, | ||
System.Collections.Generic.List< Vector3 > | right, | ||
bool | backwards | ||
) |
bool GetPortal | ( | GraphNode | toNode, |
System.Collections.Generic.List< Vector3 > | left, | ||
System.Collections.Generic.List< Vector3 > | right, | ||
bool | backwards, | ||
out int | aIndex, | ||
out int | bIndex | ||
) |
|
virtual |
Get a vertex of this node.
i | vertex index. Must be between 0 and GetVertexCount (exclusive). |
Implements MeshNode.
int GetVertexArrayIndex | ( | int | i | ) |
Return a number specifying an index in the source vertex array.
The vertex array can for example be contained in a recast tile, or be a navmesh graph, that is graph dependant. This is slower than GetVertexIndex, if you only need to compare vertices, use GetVertexIndex.
|
virtual |
Number of corner vertices that this node has.
For example for a triangle node this will return 3.
Implements MeshNode.
int GetVertexIndex | ( | int | i | ) |
Return a number identifying a vertex.
This number does not necessarily need to be a index in an array but two different vertices (in the same graph) should not have the same vertex numbers.
Int3 GetVertexInGraphSpace | ( | int | i | ) |
Returns all 3 vertices of this node in world space.
Returns all 3 vertices of this node in graph space.
|
virtual |
|
virtual |
A random point on the surface of the node.
For point nodes and other nodes which do not have a surface, this will always return the position of the node.
Reimplemented from GraphNode.
|
virtual |
Serialized the node data to a byte array.
Reimplemented from GraphNode.
|
static |
Sets the internal navmesh holder for a given graph index.
int SharedEdge | ( | GraphNode | other | ) |
Returns the edge which is shared with other.
If no edge is shared, -1 is returned. If there is a connection with the other node, but the connection is not marked as using a particular edge of the shape of the node then 0xFF will be returned.
The vertices in the edge can be retrieved using
|
virtual |
void UpdatePositionFromVertices | ( | ) |
Set the position of this node to the average of its 3 vertices.
|
virtual |
Reimplemented from MeshNode.
|
staticprotected |
Holds INavmeshHolder references for all graph indices to be able to access them in a performant manner.
|
staticprotected |
Used for synchronised access to the _navmeshHolders array.
int v0 |
Internal vertex index for the first vertex.
int v1 |
Internal vertex index for the second vertex.
int v2 |
Internal vertex index for the third vertex.