A* Pathfinding Project  4.1.22
The A* Pathfinding Project for Unity 3D
AstarData Class Reference

Stores the navigation graphs for the A* Pathfinding System. More...

Detailed Description

Stores the navigation graphs for the A* Pathfinding System.

An instance of this class is assigned to AstarPath.data, from it you can access all graphs loaded through the graphs variable.
This class also handles a lot of the high level serialization.

Public Member Functions

NavGraph AddGraph (string type)
 Adds a graph of type type to the graphs array. More...
 
NavGraph AddGraph (System.Type type)
 Adds a graph of type type to the graphs array. More...
 
void Awake ()
 Loads the graphs from memory, will load cached graphs if any exists. More...
 
NavGraph CreateGraph (string type)
 Creates a new instance of a graph of type type. More...
 
void DeserializeGraphs ()
 Deserializes graphs from data. More...
 
void DeserializeGraphs (byte[] bytes)
 Deserializes graphs from the specified byte array. More...
 
void DeserializeGraphsAdditive (byte[] bytes)
 Deserializes graphs from the specified byte array additively. More...
 
NavGraph FindGraph (System.Func< NavGraph, bool > predicate)
 Returns the first graph which satisfies the predicate. More...
 
NavGraph FindGraphOfType (System.Type type)
 Returns the first graph of type type found in the graphs array. More...
 
IEnumerable FindGraphsOfType (System.Type type)
 Loop through this function to get all graphs of type 'type'. More...
 
void FindGraphTypes ()
 Find all graph types supported in this build. More...
 
NavGraph FindGraphWhichInheritsFrom (System.Type type)
 Returns the first graph which inherits from the type type. More...
 
byte [] GetData ()
 
int GetGraphIndex (NavGraph graph)
 Gets the index of the NavGraph in the graphs array. More...
 
System.Type GetGraphType (string type)
 
void GetNodes (System.Action< GraphNode > callback)
 Calls the callback with every node in all graphs. More...
 
IEnumerable GetRaycastableGraphs ()
 All graphs which implements the UpdateableGraph interface. More...
 
IEnumerable GetUpdateableGraphs ()
 All graphs which implements the UpdateableGraph interface. More...
 
void LoadFromCache ()
 Load from data from file_cachedStartup. More...
 
void OnDestroy ()
 
bool RemoveGraph (NavGraph graph)
 Removes the specified graph from the graphs array and Destroys it in a safe manner. More...
 
byte [] SerializeGraphs ()
 Serializes all graphs settings to a byte array. More...
 
byte [] SerializeGraphs (Pathfinding.Serialization.SerializeSettings settings)
 Serializes all graphs settings and optionally node data to a byte array. More...
 
byte [] SerializeGraphs (Pathfinding.Serialization.SerializeSettings settings, out uint checksum)
 Main serializer function. More...
 
void SetData (byte[] data)
 
void UpdateShortcuts ()
 Updates shortcuts to the first graph of different types. More...
 

Static Public Member Functions

static NavGraph GetGraph (GraphNode node)
 Returns the graph which contains the specified node. More...
 

Public Attributes

bool cacheStartup
 Should graph-data be cached. More...
 
byte [] data_cachedStartup
 Serialized data for cached startup. More...
 
TextAsset file_cachedStartup
 Serialized data for cached startup. More...
 
NavGraph [] graphs = new NavGraph[0]
 All graphs this instance holds. More...
 

Package Functions

NavGraph CreateGraph (System.Type type)
 Creates a new graph instance of type type. More...
 
void LockGraphStructure (bool allowAddingGraphs=false)
 Prevent the graph structure from changing during the time this lock is held. More...
 
void UnlockGraphStructure ()
 Allows the graph structure to change again. More...
 

Properties

static AstarPath active [get]
 Shortcut to AstarPath.active. More...
 
byte [] data [get, set]
 Serialized data for all graphs and settings. More...
 
System.Type [] graphTypes [get, private set]
 All supported graph types. More...
 
GridGraph gridGraph [get, private set]
 Shortcut to the first GridGraph. More...
 
LayerGridGraph layerGridGraph [get, private set]
 Shortcut to the first LayerGridGraph. More...
 
NavMeshGraph navmesh [get, private set]
 Shortcut to the first NavMeshGraph. More...
 
PointGraph pointGraph [get, private set]
 Shortcut to the first PointGraph. More...
 
RecastGraph recastGraph [get, private set]
 Shortcut to the first RecastGraph. More...
 

Private Member Functions

void AddGraph (NavGraph graph)
 Adds the specified graph to the graphs array. More...
 
PathProcessor.GraphUpdateLock AssertSafe (bool onlyAddingGraph=false)
 
void ClearGraphs ()
 Destroys all graphs and sets graphs to null. More...
 
void DeserializeGraphsPartAdditive (Pathfinding.Serialization.AstarSerializer sr)
 Helper function for deserializing graphs. More...
 

Private Attributes

string dataString
 Serialized data for all graphs and settings. More...
 
List< bool > graphStructureLocked = new List<bool>()
 
byte [] upgradeData
 Data from versions from before 3.6.1. More...
 

Member Function Documentation

◆ AddGraph() [1/3]

NavGraph AddGraph ( string  type)

Adds a graph of type type to the graphs array.

Deprecated:

◆ AddGraph() [2/3]

NavGraph AddGraph ( System.Type  type)

Adds a graph of type type to the graphs array.

◆ AddGraph() [3/3]

void AddGraph ( NavGraph  graph)
private

Adds the specified graph to the graphs array.

◆ AssertSafe()

PathProcessor.GraphUpdateLock AssertSafe ( bool  onlyAddingGraph = false)
private

◆ Awake()

void Awake ( )

Loads the graphs from memory, will load cached graphs if any exists.

◆ ClearGraphs()

void ClearGraphs ( )
private

Destroys all graphs and sets graphs to null.

◆ CreateGraph() [1/2]

NavGraph CreateGraph ( string  type)

Creates a new instance of a graph of type type.

If no matching graph type was found, an error is logged and null is returned

Returns
The created graph
See also
CreateGraph(System.Type)
Deprecated:

◆ CreateGraph() [2/2]

NavGraph CreateGraph ( System.Type  type)
package

Creates a new graph instance of type type.

See also
CreateGraph(string)

◆ DeserializeGraphs() [1/2]

void DeserializeGraphs ( )

Deserializes graphs from data.

◆ DeserializeGraphs() [2/2]

void DeserializeGraphs ( byte []  bytes)

Deserializes graphs from the specified byte array.

An error will be logged if deserialization fails.

◆ DeserializeGraphsAdditive()

void DeserializeGraphsAdditive ( byte []  bytes)

Deserializes graphs from the specified byte array additively.

An error will be logged if deserialization fails. This function will add loaded graphs to the current ones.

◆ DeserializeGraphsPartAdditive()

void DeserializeGraphsPartAdditive ( Pathfinding.Serialization.AstarSerializer  sr)
private

Helper function for deserializing graphs.

◆ FindGraph()

NavGraph FindGraph ( System.Func< NavGraph, bool >  predicate)

Returns the first graph which satisfies the predicate.

Returns null if no graph was found.

◆ FindGraphOfType()

NavGraph FindGraphOfType ( System.Type  type)

Returns the first graph of type type found in the graphs array.

Returns null if no graph was found.

◆ FindGraphsOfType()

IEnumerable FindGraphsOfType ( System.Type  type)

Loop through this function to get all graphs of type 'type'.

foreach (GridGraph graph in AstarPath.data.FindGraphsOfType (typeof(GridGraph))) {
//Do something with the graph
}
See also
AstarPath.RegisterSafeNodeUpdate

◆ FindGraphTypes()

void FindGraphTypes ( )

Find all graph types supported in this build.

Using reflection, the assembly is searched for types which inherit from NavGraph.

◆ FindGraphWhichInheritsFrom()

NavGraph FindGraphWhichInheritsFrom ( System.Type  type)

Returns the first graph which inherits from the type type.

Returns null if no graph was found.

◆ GetData()

byte [] GetData ( )

◆ GetGraph()

static NavGraph GetGraph ( GraphNode  node)
static

Returns the graph which contains the specified node.

The graph must be in the graphs array.

Returns
Returns the graph which contains the node. Null if the graph wasn't found

◆ GetGraphIndex()

int GetGraphIndex ( NavGraph  graph)

Gets the index of the NavGraph in the graphs array.

◆ GetGraphType()

System.Type GetGraphType ( string  type)
Returns
A System.Type which matches the specified type string. If no mathing graph type was found, null is returned
Deprecated:

◆ GetNodes()

void GetNodes ( System.Action< GraphNode callback)

Calls the callback with every node in all graphs.

This is the easiest way to iterate through every existing node.

See also
Pathfinding.NavGraph.GetNodes for getting the nodes of a single graph instead of all.
Graph Updates during Runtime

◆ GetRaycastableGraphs()

IEnumerable GetRaycastableGraphs ( )

All graphs which implements the UpdateableGraph interface.

foreach (IRaycastableGraph graph in AstarPath.data.GetRaycastableGraphs ()) {
//Do something with the graph
}
See also
Pathfinding.IRaycastableGraph
Deprecated:
Deprecated because it is not used by the package internally and the use cases are few. Iterate through the graphs array instead.

◆ GetUpdateableGraphs()

IEnumerable GetUpdateableGraphs ( )

All graphs which implements the UpdateableGraph interface.

foreach (IUpdatableGraph graph in AstarPath.data.GetUpdateableGraphs ()) {
//Do something with the graph
}
See also
AstarPath.AddWorkItem
Pathfinding.IUpdatableGraph

◆ LoadFromCache()

void LoadFromCache ( )

Load from data from file_cachedStartup.

◆ LockGraphStructure()

void LockGraphStructure ( bool  allowAddingGraphs = false)
package

Prevent the graph structure from changing during the time this lock is held.

This prevents graphs from being added or removed and also prevents graphs from being serialized or deserialized. This is used when e.g an async scan is happening to ensure that for example a graph that is being scanned is not destroyed.

Each call to this method *must* be paired with exactly one call to UnlockGraphStructure. The calls may be nested.

◆ OnDestroy()

void OnDestroy ( )

◆ RemoveGraph()

bool RemoveGraph ( NavGraph  graph)

Removes the specified graph from the graphs array and Destroys it in a safe manner.

To avoid changing graph indices for the other graphs, the graph is simply nulled in the array instead of actually removing it from the array. The empty position will be reused if a new graph is added.

Returns
True if the graph was sucessfully removed (i.e it did exist in the graphs array). False otherwise.
Version
Changed in 3.2.5 to call SafeOnDestroy before removing and nulling it in the array instead of removing the element completely in the graphs array.

◆ SerializeGraphs() [1/3]

byte [] SerializeGraphs ( )

Serializes all graphs settings to a byte array.

See also
DeserializeGraphs(byte[])

◆ SerializeGraphs() [2/3]

byte [] SerializeGraphs ( Pathfinding.Serialization.SerializeSettings  settings)

Serializes all graphs settings and optionally node data to a byte array.

See also
DeserializeGraphs(byte[])
Pathfinding.Serialization.SerializeSettings

◆ SerializeGraphs() [3/3]

byte [] SerializeGraphs ( Pathfinding.Serialization.SerializeSettings  settings,
out uint  checksum 
)

Main serializer function.

Serializes all graphs to a byte array A similar function exists in the AstarPathEditor.cs script to save additional info

◆ SetData()

void SetData ( byte []  data)

◆ UnlockGraphStructure()

void UnlockGraphStructure ( )
package

Allows the graph structure to change again.

See also
LockGraphStructure

◆ UpdateShortcuts()

void UpdateShortcuts ( )

Updates shortcuts to the first graph of different types.

Hard coding references to some graph types is not really a good thing imo. I want to keep it dynamic and flexible. But these references ease the use of the system, so I decided to keep them.

Member Data Documentation

◆ cacheStartup

bool cacheStartup

Should graph-data be cached.

Caching the startup means saving the whole graphs - not only the settings - to a file (file_cachedStartup) which can be loaded when the game starts. This is usually much faster than scanning the graphs when the game starts. This is configured from the editor under the "Save & Load" tab.

See also
Saving and Loading Graphs

◆ data_cachedStartup

byte [] data_cachedStartup

Serialized data for cached startup.

Deprecated:
Deprecated since 3.6, AstarData.file_cachedStartup is now used instead

◆ dataString

string dataString
private

Serialized data for all graphs and settings.

Stored as a base64 encoded string because otherwise Unity's Undo system would sometimes corrupt the byte data (because it only stores deltas).

This can be accessed as a byte array from the data property.

Since
3.6.1

◆ file_cachedStartup

TextAsset file_cachedStartup

Serialized data for cached startup.

If set, on start the graphs will be deserialized from this file.

◆ graphs

NavGraph [] graphs = new NavGraph[0]

All graphs this instance holds.

This will be filled only after deserialization has completed. May contain null entries if graph have been removed.

◆ graphStructureLocked

List<bool> graphStructureLocked = new List<bool>()
private

◆ upgradeData

byte [] upgradeData
private

Data from versions from before 3.6.1.

Used for handling upgrades

Since
3.6.1

Property Documentation

◆ active

AstarPath active
staticget

Shortcut to AstarPath.active.

◆ data

byte [] data
getsetprivate

Serialized data for all graphs and settings.

◆ graphTypes

System.Type [] graphTypes
getprivate set

All supported graph types.

Populated through reflection search

◆ gridGraph

GridGraph gridGraph
getprivate set

Shortcut to the first GridGraph.

Updated at scanning time

◆ layerGridGraph

LayerGridGraph layerGridGraph
getprivate set

Shortcut to the first LayerGridGraph.

Updated at scanning time.

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

◆ navmesh

NavMeshGraph navmesh
getprivate set

Shortcut to the first NavMeshGraph.

Updated at scanning time

◆ pointGraph

PointGraph pointGraph
getprivate set

Shortcut to the first PointGraph.

Updated at scanning time

◆ recastGraph

RecastGraph recastGraph
getprivate set

Shortcut to the first RecastGraph.

Updated at scanning time.

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


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