Handles path calculations and thread management.
More...
Handles path calculations and thread management.
- See also
- AstarPath
-
ThreadControlQueue
-
PathReturnQueue
◆ PathProcessor()
Creates a new path processor.
- Parameters
-
astar | Uses settings from this AstarPath object |
returnQueue | When paths are completed, they will be pushed to this queue |
processors | The specified number of threads to use. If multithreaded is false, this value must be at most 1 and then it will run on the main Unity thread. |
multithreaded | Whether to use multithreading or not |
pathHandlerProvider | Allows using a different PathHandler than the standard one. For example used for cooperative pathfinding (Pathfinding.Cooperative.CooperativeContext) |
◆ AbortThreads()
Calls 'Abort' on each of the threads.
◆ CalculatePaths()
Main pathfinding method.
This method will calculate the paths in the pathfinding queue.
- See also
- CalculatePathsThreaded
-
StartPath
◆ CalculatePathsThreaded()
Main pathfinding method (multithreaded).
This method will calculate the paths in the pathfinding queue when multithreading is enabled.
- See also
- CalculatePaths
-
StartPath
- 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
◆ DestroyNode()
Destroyes the given node.
This is to be called after the node has been disconnected from the graph so that it cannot be reached from any other nodes. It should only be called during graph updates, that is when the pathfinding threads are either not running or paused.
- Warning
- This method should not be called by user code. It is used internally by the system.
◆ GetNewNodeIndex()
Returns a new global node index.
- Warning
- This method should not be called directly. It is used by the GraphNode constructor.
◆ InitializeNode()
Initializes temporary path data for a node.
- Warning
- This method should not be called directly. It is used by the GraphNode constructor.
◆ JoinThreads()
Calls 'Join' on each of the threads to block until they have completed.
◆ Lock()
◆ PausePathfinding()
Prevents pathfinding threads from starting to calculate any new paths.
- Parameters
-
block | If true, this call will block until all pathfinding threads are paused. otherwise the threads will be paused as soon as they are done with what they are currently doing. |
- Returns
- A lock object. You need to call Unlock on that object to allow pathfinding to resume.
- Note
- In most cases this should not be called from user code.
◆ TickNonMultithreaded()
void TickNonMultithreaded |
( |
| ) |
|
◆ Unlock()
◆ astar
◆ locks
readonly List<int> locks = new List<int>() |
|
private |
◆ nextLockID
◆ nextNodeIndex
Holds the next node index which has not been used by any previous node.
- See also
- nodeIndexPool
◆ nodeIndexPool
readonly Stack<int> nodeIndexPool = new Stack<int>() |
|
private |
Holds indices for nodes that have been destroyed.
To avoid trashing a lot of memory structures when nodes are frequently deleted and created, node indices are reused.
◆ pathHandlers
◆ queue
Queue for paths waiting to be calculated.
◆ returnQueue
Queue to which completed paths will be added.
◆ threadCoroutine
IEnumerator threadCoroutine |
|
private |
When no multithreading is used, the IEnumerator is stored here.
When no multithreading is used, a coroutine is used instead. It is not directly called with StartCoroutine but a separate function has just a while loop which increments the main IEnumerator. This is done so other functions can step the thread forward at any time, without having to wait for Unity to update it.
- See also
- CalculatePaths
-
CalculatePathsHandler
◆ threads
References to each of the pathfinding threads.
◆ IsUsingMultithreading
bool IsUsingMultithreading |
|
get |
Returns whether or not multithreading is used.
◆ NumThreads
Number of parallel pathfinders.
Returns the number of concurrent processes which can calculate paths at once. When using multithreading, this will be the number of threads, if not using multithreading it is always 1 (since only 1 coroutine is used).
- See also
- threadInfos
-
IsUsingMultithreading
◆ OnPathPostSearch
System.Action<Path> OnPathPostSearch |
Called after every path request.
May be called from a separate thread
◆ OnPathPreSearch
System.Action<Path> OnPathPreSearch |
Called before every path request.
May be called from a separate thread
◆ OnQueueUnblocked
System.Action OnQueueUnblocked |
The documentation for this class was generated from the following file:
- /Users/arong/Unity/a-pathfinding-project/Assets/AstarPathfindingProject/Core/Misc/PathProcessor.cs