A* Pathfinding Project  4.2.5
The A* Pathfinding Project for Unity 3D
GridNodeBase Class Referenceabstract

Base class for GridNode and LevelGridNode. More...

Detailed Description

Base class for GridNode and LevelGridNode.

Public Member Functions

override void AddConnection (GraphNode node, uint cost)
 Add a connection from this node to the specified node. More...
 
override void ClearConnections (bool alsoReverse)
 Remove all connections from this node. More...
 
void ClearCustomConnections (bool alsoReverse)
 Same as ClearConnections, but does not clear grid connections, only custom ones (e.g added by AddConnection or a NodeLink component) More...
 
override bool ContainsConnection (GraphNode node)
 Checks if this node has a connection to the specified node. 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 GridNodeBase GetNeighbourAlongDirection (int direction)
 Adjacent grid node in the specified direction. 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 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 float SurfaceArea ()
 The surface area of the node in square world units. 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...
 
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...
 

Public Attributes

Connection [] connections
 Custon non-grid 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

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

Protected Attributes

ushort gridFlags
 
int nodeInGridIndex
 Bitfield containing the x and z coordinates of the node as well as the layer (for layered grid graphs). More...
 
const int NodeInGridIndexLayerOffset = 24
 
const int NodeInGridIndexMask = 0xFFFFFF
 
- Protected Attributes inherited from GraphNode
uint flags
 Bitpacked field holding several pieces of data. More...
 

Properties

abstract bool HasConnectionsToAllEightNeighbours [get]
 True if the node has grid connections to all its 8 neighbours. More...
 
int NodeInGridIndex [get, set]
 The index of the node in the grid. More...
 
bool TmpWalkable [get, set]
 Temporary variable used internally when updating the graph. More...
 
bool WalkableErosion [get, set]
 Stores walkability before erosion is applied. More...
 
int XCoordinateInGrid [get]
 X coordinate of the node in the grid. More...
 
int ZCoordinateInGrid [get]
 Z coordinate of the node in the grid. 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...
 

Private Attributes

const int GridFlagsWalkableErosionMask = 1 << GridFlagsWalkableErosionOffset
 
const int GridFlagsWalkableErosionOffset = 8
 
const int GridFlagsWalkableTmpMask = 1 << GridFlagsWalkableTmpOffset
 
const int GridFlagsWalkableTmpOffset = 9
 

Constructor & Destructor Documentation

◆ GridNodeBase()

GridNodeBase ( AstarPath  astar)
protected

Member Function Documentation

◆ AddConnection()

override void AddConnection ( GraphNode  node,
uint  cost 
)
virtual

Add a connection from this node to the specified node.

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.

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

◆ ClearCustomConnections()

void ClearCustomConnections ( bool  alsoReverse)

Same as ClearConnections, but does not clear grid connections, only custom ones (e.g added by AddConnection or a NodeLink component)

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

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

◆ GetNeighbourAlongDirection()

abstract GridNodeBase GetNeighbourAlongDirection ( int  direction)
pure virtual

Adjacent grid node in the specified direction.

This will return null if the node does not have a connection to a node in that direction.

The dir parameter corresponds to directions in the grid as:

Z
|
|
6 2 5
\ | /
-- 3 - X - 1 ----- X
/ | \
7 0 4
|
|
See also
GetConnections

Implemented in LevelGridNode, and GridNode.

◆ Open()

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

Open the node.

Used internally for the A* algorithm.

Implements GraphNode.

◆ RandomPointOnSurface()

override Vector3 RandomPointOnSurface ( )
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.

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

◆ SurfaceArea()

override float SurfaceArea ( )
virtual

The surface area of the node in square world units.

Reimplemented from GraphNode.

◆ UpdateRecursiveG()

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

Reimplemented from GraphNode.

Member Data Documentation

◆ connections

Connection [] connections

Custon non-grid connections from this node.

See also
AddConnection
RemoveConnection

This field is removed if the ASTAR_GRID_NO_CUSTOM_CONNECTIONS compiler directive is used. Removing it can save a tiny bit of memory. You can enable the define in the Optimizations tab in the A* inspector.

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

◆ gridFlags

ushort gridFlags
protected

◆ GridFlagsWalkableErosionMask

const int GridFlagsWalkableErosionMask = 1 << GridFlagsWalkableErosionOffset
private

◆ GridFlagsWalkableErosionOffset

const int GridFlagsWalkableErosionOffset = 8
private

◆ GridFlagsWalkableTmpMask

const int GridFlagsWalkableTmpMask = 1 << GridFlagsWalkableTmpOffset
private

◆ GridFlagsWalkableTmpOffset

const int GridFlagsWalkableTmpOffset = 9
private

◆ nodeInGridIndex

int nodeInGridIndex
protected

Bitfield containing the x and z coordinates of the node as well as the layer (for layered grid graphs).

See also
NodeInGridIndex

◆ NodeInGridIndexLayerOffset

const int NodeInGridIndexLayerOffset = 24
protected

◆ NodeInGridIndexMask

const int NodeInGridIndexMask = 0xFFFFFF
protected

Property Documentation

◆ HasConnectionsToAllEightNeighbours

abstract bool HasConnectionsToAllEightNeighbours
get

True if the node has grid connections to all its 8 neighbours.

Note
This will always return false if GridGraph.neighbours is set to anything other than Eight.
See also
GetNeighbourAlongDirection

◆ NodeInGridIndex

int NodeInGridIndex
getset

The index of the node in the grid.

This is x + z*graph.width So you can get the X and Z indices using

int index = node.NodeInGridIndex;
int x = index % graph.width;
int z = index / graph.width;
// where graph is GridNode.GetGridGraph (node.graphIndex), i.e the graph the nodes are contained in.

◆ TmpWalkable

bool TmpWalkable
getset

Temporary variable used internally when updating the graph.

◆ WalkableErosion

bool WalkableErosion
getset

Stores walkability before erosion is applied.

Used internally when updating the graph.

◆ XCoordinateInGrid

int XCoordinateInGrid
get

X coordinate of the node in the grid.

The node in the bottom left corner has (x,z) = (0,0) and the one in the opposite corner has (x,z) = (width-1, depth-1)

See also
ZCoordInGrid
NodeInGridIndex

◆ ZCoordinateInGrid

int ZCoordinateInGrid
get

Z coordinate of the node in the grid.

The node in the bottom left corner has (x,z) = (0,0) and the one in the opposite corner has (x,z) = (width-1, depth-1)

See also
XCoordInGrid
NodeInGridIndex

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