A* Pathfinding Project  4.3.0
The A* Pathfinding Project for Unity 3D
MeshNode Class Referenceabstract

Public Member Functions

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...
 
abstract Vector3 ClosestPointOnNode (Vector3 p)
 Closest point on the surface of this node to the point p. More...
 
abstract Vector3 ClosestPointOnNodeXZ (Vector3 p)
 Closest point on the surface of this node when seen from above. 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...
 
abstract bool ContainsPoint (Vector3 point)
 Checks if point is inside the node when seen from above. More...
 
abstract bool ContainsPointInGraphSpace (Int3 point)
 Checks if point is inside the node in graph space. 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...
 
abstract Int3 GetVertex (int i)
 Get a vertex of this node. More...
 
abstract int GetVertexCount ()
 Number of corner vertices that this node has. 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...
 
override void UpdateRecursiveG (Path path, PathNode pathNode, PathHandler handler)
 
- Public Member Functions inherited from GraphNode
virtual void DeserializeNode (GraphSerializationContext ctx)
 Deserializes the node data from a byte array. More...
 
void Destroy ()
 Destroys the node. More...
 
virtual bool GetPortal (GraphNode other, List< Vector3 > left, List< Vector3 > right, bool backwards)
 Add a portal from this node to the specified node. More...
 
abstract void Open (Path path, PathNode pathNode, PathHandler handler)
 Open the node. More...
 
virtual Vector3 RandomPointOnSurface ()
 A random point on the surface of the node. More...
 
void RecalculateConnectionCosts ()
 Recalculates a node's connection costs. More...
 
virtual void SerializeNode (GraphSerializationContext ctx)
 Serialized the node data to a byte array. More...
 
void SetConnectivityDirty ()
 Inform the system that the node's connectivity has changed. More...
 
virtual float SurfaceArea ()
 The surface area of the node in square world units. More...
 

Public Attributes

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...
 

Protected Member Functions

 MeshNode (AstarPath astar)
 
- Protected Member Functions inherited from GraphNode
 GraphNode (AstarPath astar)
 Constructor for a graph node. More...
 

Additional Inherited Members

- 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...
 

Constructor & Destructor Documentation

◆ MeshNode()

MeshNode ( AstarPath  astar)
protected

Member Function Documentation

◆ AddConnection() [1/2]

override void AddConnection ( GraphNode  node,
uint  cost 
)
virtual

Add a connection from this node to the specified node.

Parameters
nodeNode to add a connection to
costCost of traversing the connection. A cost of 1000 corresponds approximately to the cost of moving 1 world unit.

If the connection already exists, the cost will simply be updated and no extra connection added.

Note
Only adds a one-way connection. Consider calling the same function on the other node to get a two-way connection.

Implements GraphNode.

◆ AddConnection() [2/2]

void AddConnection ( GraphNode  node,
uint  cost,
int  shapeEdge 
)

Add a connection from this node to the specified node.

Parameters
nodeNode to add a connection to
costCost of traversing the connection. A cost of 1000 corresponds approximately to the cost of moving 1 world unit.
shapeEdgeWhich edge on the shape of this node to use or -1 if no edge is used.
See also
Pathfinding.Connection.edge

If the connection already exists, the cost will simply be updated and no extra connection added.

Note
Only adds a one-way connection. Consider calling the same function on the other node to get a two-way connection.

◆ ClearConnections()

override void ClearConnections ( bool  alsoReverse)
virtual

Remove all connections from this node.

Parameters
alsoReverseif true, neighbours will be requested to remove connections to this node.

Implements GraphNode.

◆ ClosestPointOnNode()

abstract Vector3 ClosestPointOnNode ( Vector3  p)
pure virtual

Closest point on the surface of this node to the point p.

Implemented in TriangleMeshNode.

◆ ClosestPointOnNodeXZ()

abstract Vector3 ClosestPointOnNodeXZ ( Vector3  p)
pure 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.

Implemented in TriangleMeshNode.

◆ ContainsConnection()

override bool ContainsConnection ( GraphNode  node)
virtual

Checks if this node has a connection to the specified node.

AstarPath.active.AddWorkItem(new AstarWorkItem(ctx => {
// Connect two nodes
var node1 = AstarPath.active.GetNearest(transform.position, NNConstraint.None).node;
var node2 = AstarPath.active.GetNearest(transform.position + Vector3.right, NNConstraint.None).node;
var cost = (uint)(node2.position - node1.position).costMagnitude;
node1.AddConnection(node2, cost);
node2.AddConnection(node1, cost);
node1.ContainsConnection(node2); // True
node1.RemoveConnection(node2);
node2.RemoveConnection(node1);
}));

Reimplemented from GraphNode.

◆ ContainsPoint() [1/2]

virtual bool ContainsPoint ( Int3  point)
virtual

Checks if point is inside the node when seen from above.

◆ ContainsPoint() [2/2]

abstract bool ContainsPoint ( Vector3  point)
pure 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.

Int3 p = (Int3)graph.transform.InverseTransform(point);
node.ContainsPointInGraphSpace(p);

Implemented in TriangleMeshNode.

◆ ContainsPointInGraphSpace()

abstract bool ContainsPointInGraphSpace ( Int3  point)
pure 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.

Implemented in TriangleMeshNode.

◆ DeserializeReferences()

override void DeserializeReferences ( GraphSerializationContext  ctx)
virtual

Used to deserialize references to other nodes e.g connections.

Use the GraphSerializationContext.GetNodeIdentifier and GraphSerializationContext.GetNodeFromIdentifier methods for serialization and deserialization respectively.

Nodes must override this method and serialize their connections. Graph generators do not need to call this method, it will be called automatically on all nodes at the correct time by the serializer.

Reimplemented from GraphNode.

◆ GetConnections()

override void GetConnections ( System.Action< GraphNode action)
virtual

Calls the delegate with all connections from this node.

node.GetConnections(connectedTo => {
Debug.DrawLine((Vector3)node.position, (Vector3)connectedTo.position, Color.red);
});

You can add all connected nodes to a list like this

var connections = new List<GraphNode>();
node.GetConnections(connections.Add);

Implements GraphNode.

◆ GetGizmoHashCode()

override int GetGizmoHashCode ( )
virtual

Hash code used for checking if the gizmos need to be updated.

Will change when the gizmos for the node might change.

Reimplemented from GraphNode.

◆ GetVertex()

abstract Int3 GetVertex ( int  i)
pure virtual

Get a vertex of this node.

Parameters
ivertex index. Must be between 0 and GetVertexCount (exclusive).

Implemented in TriangleMeshNode.

◆ GetVertexCount()

abstract int GetVertexCount ( )
pure virtual

Number of corner vertices that this node has.

For example for a triangle node this will return 3.

Implemented in TriangleMeshNode.

◆ RemoveConnection()

override void RemoveConnection ( GraphNode  node)
virtual

Removes any connection from this node to the specified node.

If no such connection exists, nothing will be done.

Note
This only removes the connection from this node to the other node. You may want to call the same function on the other node to remove its eventual connection to this node.

Implements GraphNode.

◆ SerializeReferences()

override void SerializeReferences ( GraphSerializationContext  ctx)
virtual

Used to serialize references to other nodes e.g connections.

Use the GraphSerializationContext.GetNodeIdentifier and GraphSerializationContext.GetNodeFromIdentifier methods for serialization and deserialization respectively.

Nodes must override this method and serialize their connections. Graph generators do not need to call this method, it will be called automatically on all nodes at the correct time by the serializer.

Reimplemented from GraphNode.

◆ UpdateRecursiveG()

override void UpdateRecursiveG ( Path  path,
PathNode  pathNode,
PathHandler  handler 
)
virtual

Reimplemented from GraphNode.

Reimplemented in TriangleMeshNode.

Member Data Documentation

◆ connections

Connection [] connections

All connections from this node.

See also
AddConnection
RemoveConnection
Note
If you modify this array or the contents of it you must call SetConnectivityDirty.

The documentation for this class was generated from the following file: