A* Pathfinding Project  4.1.9
The A* Pathfinding Project for Unity 3D
GridNode Class Reference

Node used for the GridGraph. More...

Detailed Description

Node used for the GridGraph.

Public Member Functions

 GridNode (AstarPath astar)
 
override void ClearConnections (bool alsoReverse)
 Remove all connections from this node. More...
 
Vector3 ClosestPointOnNode (Vector3 p)
 
override void DeserializeNode (GraphSerializationContext ctx)
 Deserializes node data (for example when loading graphs from file). More...
 
override void FloodFill (Stack< GraphNode > stack, uint region)
 Internal method to run a flood fill in order to recalculate the Area property. More...
 
bool GetConnectionInternal (int dir)
 True if the node has a connection in the specified direction. More...
 
override void GetConnections (System.Action< GraphNode > action)
 Calls the delegate with all connections from this node. More...
 
override void GetConnections (System.Action< Connection > action)
 Calls the delegate with all connections and respective costs from this node. More...
 
override GridNodeBase GetNeighbourAlongDirection (int direction)
 Adjacent grid node in the specified direction. More...
 
override bool GetPortal (GraphNode other, List< Vector3 > left, List< Vector3 > right, bool backwards)
 Add a portal from this node to the specified node. More...
 
bool HasConnectionInDirection (int dir)
 True if the node has a connection in the specified direction. More...
 
override void Open (Path path, PathNode pathNode, PathHandler handler)
 Open the node. More...
 
void ResetConnectionsInternal ()
 Disables all grid connections from this node. More...
 
override void SerializeNode (GraphSerializationContext ctx)
 Serializes node data (for example when saving graphs to file). More...
 
void SetAllConnectionInternal (int connections)
 Sets the state of all grid connections. More...
 
void SetConnectionInternal (int dir, bool value)
 Enables or disables a connection in a specified direction on the graph. More...
 
override void UpdateRecursiveG (Path path, PathNode pathNode, PathHandler handler)
 Internal method to update the G score. More...
 
- Public Member Functions inherited from GridNodeBase
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 FloodFill (System.Collections.Generic.Stack< GraphNode > stack, uint region)
 
override void GetConnections (System.Action< GraphNode > action)
 Calls the delegate with all connections from this node. More...
 
override void GetConnections (System.Action< Connection > action)
 Calls the delegate with all connections and respective costs from this node. More...
 
override int GetGizmoHashCode ()
 Hash code used for checking if the gizmos need to be updated. 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)
 Internal method to update the G score. More...
 
- Public Member Functions inherited from GraphNode
virtual void OpenCooperative (CooperativeABPath path, PathNodeCooperative pathNode, CooperativePathHandler handler)
 Open the node cooperatively. More...
 
virtual void RecalculateConnectionCosts ()
 Recalculates all connection costs from this node. More...
 

Static Public Member Functions

static GridGraph GetGridGraph (uint graphIndex)
 
static void SetGridGraph (int graphIndex, GridGraph graph)
 

Properties

bool EdgeNode [get, set]
 Work in progress for a feature that required info about which nodes were at the border of the graph. More...
 
override bool HasConnectionsToAllEightNeighbours [get]
 
ushort InternalGridFlags [get, set]
 Internal use only. More...
 
- Properties inherited from GridNodeBase
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, set]
 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 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 can be traversed. More...
 

Private Attributes

const int GridFlagsConnectionBit0 = 1 << GridFlagsConnectionOffset
 
const int GridFlagsConnectionMask = 0xFF << GridFlagsConnectionOffset
 
const int GridFlagsConnectionOffset = 0
 
const int GridFlagsEdgeNodeMask = 1 << GridFlagsEdgeNodeOffset
 
const int GridFlagsEdgeNodeOffset = 10
 

Static Private Attributes

static GridGraph [] _gridGraphs = new GridGraph[0]
 

Additional Inherited Members

- Public Attributes inherited from GridNodeBase
Connection [] connections
 
- Public Attributes inherited from GraphNode
const uint MaxAreaIndex = FlagsAreaMask >> FlagsAreaOffset
 
const uint MaxGraphIndex = FlagsGraphMask >> FlagsGraphOffset
 Max number of graphs-1. More...
 
Int3 position
 Position of the node in world space. More...
 
- Protected Member Functions inherited from GridNodeBase
 GridNodeBase (AstarPath astar)
 
- Protected Member Functions inherited from GraphNode
 GraphNode (AstarPath astar)
 Constructor for a graph node. More...
 
- Protected Attributes inherited from GridNodeBase
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...
 
- Package Functions inherited from GraphNode
void Destroy ()
 Destroys the node. More...
 

Constructor & Destructor Documentation

◆ GridNode()

GridNode ( AstarPath  astar)

Member Function Documentation

◆ 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()

Vector3 ClosestPointOnNode ( Vector3  p)

◆ DeserializeNode()

override void DeserializeNode ( GraphSerializationContext  ctx)
virtual

Deserializes node data (for example when loading graphs from file).

See also
SerializeNode

Reimplemented from GraphNode.

◆ FloodFill()

override void FloodFill ( Stack< GraphNode stack,
uint  region 
)
virtual

Internal method to run a flood fill in order to recalculate the Area property.

Reimplemented from GraphNode.

◆ GetConnectionInternal()

bool GetConnectionInternal ( int  dir)

True if the node has a connection in the specified direction.

Deprecated:
Use HasConnectionInDirection

◆ GetConnections() [1/2]

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.

◆ GetConnections() [2/2]

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

Calls the delegate with all connections and respective costs from this node.

Implements GraphNode.

◆ GetGridGraph()

static GridGraph GetGridGraph ( uint  graphIndex)
static

◆ GetNeighbourAlongDirection()

override GridNodeBase GetNeighbourAlongDirection ( int  direction)
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

Implements GridNodeBase.

◆ GetPortal()

override bool GetPortal ( GraphNode  other,
List< Vector3 >  left,
List< Vector3 >  right,
bool  backwards 
)
virtual

Add a portal from this node to the specified node.

This function should add a portal to the left and right lists which is connecting the two nodes (this and other).

Parameters
otherThe node which is on the other side of the portal (strictly speaking it does not actually have to be on the other side of the portal though).
leftList of portal points on the left side of the funnel
rightList of portal points on the right side of the funnel
backwardsIf this is true, the call was made on a node with the other node as the node before this one in the path. In this case you may choose to do nothing since a similar call will be made to the other node with this node referenced as other (but then with backwards = true). You do not have to care about switching the left and right lists, that is done for you already.
Returns
True if the call was deemed successful. False if some unknown case was encountered and no portal could be added. If both calls to node1.GetPortal (node2,...) and node2.GetPortal (node1,...) return false, the funnel modifier will fall back to adding to the path the positions of the node.

The default implementation simply returns false.

This function may add more than one portal if necessary.

See also
http://digestingduck.blogspot.se/2010/03/simple-stupid-funnel-algorithm.html

Reimplemented from GraphNode.

◆ HasConnectionInDirection()

bool HasConnectionInDirection ( int  dir)

True if the node has a connection in the specified direction.

The dir parameter corresponds to directions in the grid as:

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

◆ Open()

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

Open the node.

Adds all neighbours of this node to the open list.

See also
https://en.wikipedia.org/wiki/A*_search_algorithm

Implements GraphNode.

◆ ResetConnectionsInternal()

void ResetConnectionsInternal ( )

Disables all grid connections from this node.

Note
Other nodes might still be able to get to this node. Therefore it is recommended to also disable the relevant connections on adjacent nodes.

◆ SerializeNode()

override void SerializeNode ( GraphSerializationContext  ctx)
virtual

Serializes node data (for example when saving graphs to file).

See also
DeserializeNode

Reimplemented from GraphNode.

◆ SetAllConnectionInternal()

void SetAllConnectionInternal ( int  connections)

Sets the state of all grid connections.

Parameters
connectionsa bitmask of the connections (bit 0 is the first connection, bit 1 the second connection, etc.).
See also
SetConnectionInternal

◆ SetConnectionInternal()

void SetConnectionInternal ( int  dir,
bool  value 
)

Enables or disables a connection in a specified direction on the graph.

See also
HasConnectionInDirection

◆ SetGridGraph()

static void SetGridGraph ( int  graphIndex,
GridGraph  graph 
)
static

◆ UpdateRecursiveG()

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

Internal method to update the G score.

Internal method to update the G score for this node and all children of it in the search graph

Reimplemented from GraphNode.

Member Data Documentation

◆ _gridGraphs

GridGraph [] _gridGraphs = new GridGraph[0]
staticprivate

◆ GridFlagsConnectionBit0

const int GridFlagsConnectionBit0 = 1 << GridFlagsConnectionOffset
private

◆ GridFlagsConnectionMask

const int GridFlagsConnectionMask = 0xFF << GridFlagsConnectionOffset
private

◆ GridFlagsConnectionOffset

const int GridFlagsConnectionOffset = 0
private

◆ GridFlagsEdgeNodeMask

const int GridFlagsEdgeNodeMask = 1 << GridFlagsEdgeNodeOffset
private

◆ GridFlagsEdgeNodeOffset

const int GridFlagsEdgeNodeOffset = 10
private

Property Documentation

◆ EdgeNode

bool EdgeNode
getset

Work in progress for a feature that required info about which nodes were at the border of the graph.

Note
This property is not functional at the moment.

◆ HasConnectionsToAllEightNeighbours

override bool HasConnectionsToAllEightNeighbours
get

◆ InternalGridFlags

ushort InternalGridFlags
getsetpackage

Internal use only.


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