Class FloodPath Extends Path

Public

Calculates paths from everywhere to a single point.

This path is a bit special, because it does not do anything useful by itself. What it does is that it calculates paths to all nodes it can reach, it floods the graph. This data will remain stored in the path. Then you can calculate a FloodPathTracer path. That path will trace the path from its starting point all the way to where this path started. A FloodPathTracer search is extremely fast to calculate compared to a normal path request.

It is very useful in for example tower defence games, where all your AIs will walk to the same point but from different places, and you do not update the graph or change the target point very often.

Usage:

  • At start, you calculate ONE FloodPath and save the reference (it will be needed later).

  • Then when a unit is spawned or needs its path recalculated, start a FloodPathTracer path from the unit's position. It will then find the shortest path to the point specified when you calculated the FloodPath extremely quickly.

  • If you update the graph (for example place a tower in a TD game) or need to change the target point, you calculate a new FloodPath and make all AIs calculate new FloodPathTracer paths.

Note

Since a FloodPathTracer path only uses precalculated information, it will always use the same penalties/tags as the FloodPath it references. If you want to use different penalties/tags, you will have to calculate a new FloodPath.

Here follows some example code of the above list of steps: public static FloodPath fpath;

public void Start () {
fpath = FloodPath.Construct (someTargetPosition, null);
AstarPath.StartPath (fpath);
}

When searching for a new path to someTargetPosition from let's say transform.position, you do FloodPathTracer fpathTrace = FloodPathTracer.Construct (transform.position,fpath,null);
seeker.StartPath (fpathTrace,OnPathComplete);
Where OnPathComplete is your callback function.

Integration with the built-in movement scripts

The built-in movement scripts cannot calculate a FloodPathTracer path themselves, but you can use the SetPath method to assign such a path to them: var ai = GetComponent<IAstarAI>();
// Disable the agent's own path recalculation code
ai.canSearch = false;
ai.SetPath(FloodPathTracer.Construct(ai.position, floodPath));

A* Pro Feature

This is an A* Pathfinding Project Pro feature only. This function/class/variable might not exist in the Free version of the A* Pathfinding Project or the functionality might be limited.
The Pro version can be bought here

Public Methods

Default constructor.

GetParent (node)
HasPathTo (node)
OnVisitNode (ctx, pathNode, hScore, gScore)

Called for every node that the path visits.

Public Static Methods

Construct (start, [callback])

Public Variables

originalStartPoint
Public
saveParents

If false, will not save any information.

Public
startNode
Public
startPoint
Public

Public Static Variables

TemporaryNodeBit
Public Static

Inherited Public Members

Blocks until this path has been calculated and returned.

Claim (o)

Increase the reference count on this path by 1 (for pooling).

CompleteState

Current state of the path.

Public
Error ()

Aborts the path because of an error.

Causes the path to fail and sets errorLog to msg.

Total Length of the path.

IsDone ()

True if this path is done calculating.

MarkerOpenCandidateConnectionsToEnd
Public Static Readonly
MarkerTrace
Public Static Readonly
PipelineState

Returns the state of the path in the pathfinding pipeline.

Public
Release (o, silent=…)

Reduces the reference count on the path by 1 (pooling).

UseSettings (settings)

Copies the given settings into this path.

Waits until this path has been calculated and returned.

callback

Callback to call when the path is complete.

Public
duration

How long it took to calculate this path in milliseconds.

Public
error

If the path failed, this is true.

Public
errorLog

Additional info on why a path failed.

Public
heuristic

Determines which heuristic to use.

Public
heuristicScale

Scale of the heuristic values.

Public
immediateCallback

Immediate callback to call when the path is complete.

Public
nearestNodeConstraint

Constraint for how to search for nodes that are traversable by this path.

Public
nearestNodeDistanceMetric

Distance metric to use when searching for the start and end nodes in the graph.

Public
path

Holds the path as a GraphNode list.

Public
pathID

ID of this path.

Public
searchedNodes

Number of nodes this path has searched.

Public
traversalConstraint

Constrains which nodes the path can traverse.

Public
traversalCosts

Specifies the cost of traversing different nodes.

Public
vectorPath

Holds the (possibly post-processed) path as a Vector3 list.

Public

Private/Protected Members

CalculateStep (ctx, targetTick)

Calculates the path until completed or until the time has passed targetTick.

Cleanup (ctx)

Always called after the path has been calculated.

DebugString (builder, logMode)

Returns a string with information about it.

DebugStringPrefix (logMode, text)

Writes text shared for all overrides of DebugString to the string builder.

DebugStringSuffix (logMode, text)

Writes text shared for all overrides of DebugString to the string builder.

IsValid (nodeStorage)

Checks if the flood path data is still valid.

Called when the path enters the pool.

OnFoundEndNode (ctx, pathNode, hScore, gScore)

Called when a valid node has been found for the end of the path.

Called when there are no more nodes to search.

Prepare (ctx)

Called before the path is started.

PrepareBase (pathHandler)

Prepares low level path variables for calculation.

Reset ()

Reset all values to their default values.

Calls callback to return the calculated path.

Setup (start, callback)
Trace (ctx, fromPathNodeIndex, [reverse])

completeState

Backing field for CompleteState.

Protected
hasBeenReset

True if the Reset function has been called.

Protected
parents
Protected
validationHash
Private