A* Pathfinding Project
4.0.8
The A* Pathfinding Project for Unity 3D
|
Base class for GridNode and LevelGridNode. More...
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. | |
override void | ClearConnections (bool alsoReverse) |
Remove all connections from this node. | |
override bool | ContainsConnection (GraphNode node) |
Checks if this node has a connection to the specified node. | |
override void | DeserializeReferences (GraphSerializationContext ctx) |
Used to deserialize references to other nodes e.g connections. | |
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. | |
override int | GetGizmoHashCode () |
Hash code used for checking if the gizmos need to be updated. | |
abstract GridNodeBase | GetNeighbourAlongDirection (int direction) |
Adjacent grid node in the specified direction. | |
override void | Open (Path path, PathNode pathNode, PathHandler handler) |
Open the node. | |
override Vector3 | RandomPointOnSurface () |
A random point on the surface of the node. | |
override void | RemoveConnection (GraphNode node) |
Removes any connection from this node to the specified node. | |
override void | SerializeReferences (GraphSerializationContext ctx) |
Used to serialize references to other nodes e.g connections. | |
override float | SurfaceArea () |
The surface area of the node in square world units. | |
override void | UpdateRecursiveG (Path path, PathNode pathNode, PathHandler handler) |
Public Member Functions inherited from GraphNode | |
virtual void | DeserializeNode (GraphSerializationContext ctx) |
virtual void | FloodFill (Stack< GraphNode > stack, uint region) |
virtual bool | GetPortal (GraphNode other, List< Vector3 > left, List< Vector3 > right, bool backwards) |
Add a portal from this node to the specified node. | |
virtual void | RecalculateConnectionCosts () |
Recalculates all connection costs from this node. | |
virtual void | SerializeNode (GraphSerializationContext ctx) |
void | UpdateG (Path path, PathNode pathNode) |
Public Attributes | |
Connection[] | connections |
Public Attributes inherited from GraphNode | |
const uint | MaxAreaIndex = FlagsAreaMask >> FlagsAreaOffset |
const uint | MaxGraphIndex = FlagsGraphMask >> FlagsGraphOffset |
Max number of graphs-1. | |
Int3 | position |
Position of the node in world space. | |
Protected Member Functions | |
GridNodeBase (AstarPath astar) | |
Protected Member Functions inherited from GraphNode | |
GraphNode (AstarPath astar) | |
Constructor for a graph node. | |
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). | |
const int | NodeInGridIndexLayerOffset = 24 |
const int | NodeInGridIndexMask = 0xFFFFFF |
Protected Attributes inherited from GraphNode | |
uint | flags |
Bitpacked field holding several pieces of data. | |
Properties | |
abstract bool | HasConnectionsToAllEightNeighbours [get] |
True if the node has grid connections to all its 8 neighbours. | |
int | NodeInGridIndex [get, set] |
The index of the node in the grid. | |
bool | TmpWalkable [get, set] |
Temporary variable used internally when updating the graph. | |
bool | WalkableErosion [get, set] |
Stores walkability before erosion is applied. | |
int | XCoordinateInGrid [get] |
X coordinate of the node in the grid. | |
int | ZCoordinateInGrid [get] |
Z coordinate of the node in the grid. | |
Properties inherited from GraphNode | |
uint | Area [get, set] |
Connected component that contains the node. | |
bool | Destroyed [get] |
uint | Flags [get, set] |
Holds various bitpacked variables. | |
uint | GraphIndex [get, set] |
Graph which contains this node. | |
int | NodeIndex [get] |
Internal unique index. | |
uint | Penalty [get, set] |
Penalty cost for walking on this node. | |
uint | Tag [get, set] |
Node tag. | |
bool | Walkable [get, set] |
True if the node is traversable. | |
Private Attributes | |
const int | GridFlagsWalkableErosionMask = 1 << GridFlagsWalkableErosionOffset |
const int | GridFlagsWalkableErosionOffset = 8 |
const int | GridFlagsWalkableTmpMask = 1 << GridFlagsWalkableTmpOffset |
const int | GridFlagsWalkableTmpOffset = 9 |
Static Private Attributes | |
static readonly System.Version | VERSION_3_8_3 = new System.Version(3, 8, 3) |
Cached to avoid allocations. | |
Additional Inherited Members | |
Package Functions inherited from GraphNode | |
void | Destroy () |
Destroys the node. | |
|
protected |
|
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.
Implements GraphNode.
|
virtual |
Remove all connections from this node.
alsoReverse | if true, neighbours will be requested to remove connections to this node. |
Implements GraphNode.
|
virtual |
Checks if this node has a connection to the specified node.
Reimplemented from GraphNode.
|
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.
override void FloodFill | ( | System.Collections.Generic.Stack< GraphNode > | stack, |
uint | region | ||
) |
|
virtual |
Calls the delegate with all connections from this node.
You can add all connected nodes to a list like this
Implements GraphNode.
|
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.
|
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:
Implemented in LevelGridNode, and GridNode.
|
virtual |
Open the node.
Implements GraphNode.
|
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 |
Removes any connection from this node to the specified node.
If no such connection exists, nothing will be done.
Implements GraphNode.
|
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.
|
virtual |
The surface area of the node in square world units.
Reimplemented from GraphNode.
|
virtual |
Reimplemented from GraphNode.
Connection [] connections |
|
protected |
|
private |
|
private |
|
private |
|
private |
|
protected |
Bitfield containing the x and z coordinates of the node as well as the layer (for layered grid graphs).
|
protected |
|
protected |
|
staticprivate |
Cached to avoid allocations.
|
get |
True if the node has grid connections to all its 8 neighbours.
|
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
|
getset |
Temporary variable used internally when updating the graph.
|
getset |
Stores walkability before erosion is applied.
Used internally when updating the graph.
|
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)
|
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)