A* Pathfinding Project  4.0.9
The A* Pathfinding Project for Unity 3D
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Properties Events Macros Groups Pages
NodeLink2 Class Reference

Connects two nodes via two intermediate point nodes. More...

Detailed Description

Connects two nodes via two intermediate point nodes.

In contrast to the NodeLink component, this link type will not connect the nodes directly instead it will create two point nodes at the start and end position of this link and connect through those nodes.

If the closest node to this object is called A and the closest node to the end transform is called D, then it will create one point node at this object's position (call it B) and one point node at the position of the end transform (call it C), it will then connect A to B, B to C and C to D.

This link type is possible to detect while following since it has these special point nodes in the middle. The link corresponding to one of those intermediate nodes can be retrieved using the GetNodeLink method which can be of great use if you want to, for example, play a link specific animation when reaching the link.

See Also
The example scene RecastExample2 contains a few links which you can take a look at to see how they are used.

Public Member Functions

void Apply (bool forceNewCheck)
 
void InternalOnPostScan ()
 
void OnDrawGizmos ()
 
void OnDrawGizmos (bool selected)
 
virtual void OnDrawGizmosSelected ()
 
override void OnGraphsPostUpdate ()
 Called after graphs have been updated using GraphUpdateObjects.
 
override void OnPostScan ()
 Called right after all graphs have been scanned.
 
- Public Member Functions inherited from GraphModifier
virtual void OnGraphsPreUpdate ()
 Called before graphs are updated using GraphUpdateObjects.
 
virtual void OnLatePostScan ()
 Called at the end of the scanning procedure.
 
virtual void OnPostCacheLoad ()
 Called after cached graphs have been loaded.
 
virtual void OnPreScan ()
 Called right before graphs are going to be scanned.
 

Static Public Member Functions

static NodeLink2 GetNodeLink (GraphNode node)
 
- Static Public Member Functions inherited from GraphModifier
static void FindAllModifiers ()
 
static void TriggerEvent (GraphModifier.EventType type)
 Triggers an event for all active graph modifiers.
 

Public Attributes

float costFactor = 1.0f
 The connection will be this times harder/slower to traverse.
 
Transform end
 End position of the link.
 
bool oneWay = false
 Make a one-way connection.
 

Protected Member Functions

override void OnDisable ()
 Removes this modifier from list of active modifiers.
 
override void OnEnable ()
 Adds this modifier to list of active modifiers.
 
- Protected Member Functions inherited from GraphModifier
override void Awake ()
 
virtual void OnDestroy ()
 
- Protected Member Functions inherited from VersionedMonoBehaviour
virtual int OnUpgradeSerializedData (int version)
 Handle serialization backwards compatibility.
 

Static Protected Attributes

static Dictionary< GraphNode,
NodeLink2
reference = new Dictionary<GraphNode, NodeLink2>()
 
- Static Protected Attributes inherited from GraphModifier
static Dictionary< ulong,
GraphModifier
usedIDs = new Dictionary<ulong, GraphModifier>()
 Maps persistent IDs to the component that uses it.
 

Static Package Functions

static void DeserializeReferences (Pathfinding.Serialization.GraphSerializationContext ctx)
 
static void SerializeReferences (Pathfinding.Serialization.GraphSerializationContext ctx)
 

Properties

PointNode endNode [get, set]
 
GraphNode EndNode [get]
 
Transform EndTransform [get]
 
PointNode startNode [get, set]
 
GraphNode StartNode [get]
 
Transform StartTransform [get]
 

Private Member Functions

void ContextApplyForce ()
 
void RemoveConnections (GraphNode node)
 

Private Attributes

Vector3 clamped1
 
Vector3 clamped2
 
GraphNode connectedNode1
 
GraphNode connectedNode2
 
bool postScanCalled = false
 

Static Private Attributes

static readonly Color GizmosColor = new Color(206.0f/255.0f, 136.0f/255.0f, 48.0f/255.0f, 0.5f)
 
static readonly Color GizmosColorSelected = new Color(235.0f/255.0f, 123.0f/255.0f, 32.0f/255.0f, 1.0f)
 

Additional Inherited Members

- Public Types inherited from GraphModifier
enum  EventType {
  PostScan = 1 << 0, PreScan = 1 << 1, LatePostScan = 1 << 2, PreUpdate = 1 << 3,
  PostUpdate = 1 << 4, PostCacheLoad = 1 << 5
}
 GraphModifier event type. More...
 
- Static Protected Member Functions inherited from GraphModifier
static List< T > GetModifiersOfType< T > ()
 
- Protected Attributes inherited from GraphModifier
ulong uniqueID
 Unique persistent ID for this component, used for serialization.
 

Member Function Documentation

void Apply ( bool  forceNewCheck)
void ContextApplyForce ( )
private
static void DeserializeReferences ( Pathfinding.Serialization.GraphSerializationContext  ctx)
staticpackage
static NodeLink2 GetNodeLink ( GraphNode  node)
static
void InternalOnPostScan ( )
override void OnDisable ( )
protectedvirtual

Removes this modifier from list of active modifiers.

Reimplemented from GraphModifier.

void OnDrawGizmos ( )
void OnDrawGizmos ( bool  selected)
virtual void OnDrawGizmosSelected ( )
virtual

Reimplemented in AnimationLink.

override void OnEnable ( )
protectedvirtual

Adds this modifier to list of active modifiers.

Reimplemented from GraphModifier.

override void OnGraphsPostUpdate ( )
virtual

Called after graphs have been updated using GraphUpdateObjects.

Eventual flood filling has been done

Reimplemented from GraphModifier.

override void OnPostScan ( )
virtual

Called right after all graphs have been scanned.

FloodFill and other post processing has not been done.

Warning
Since OnEnable and Awake are called roughly in the same time, the only way to ensure that these scripts get this call when scanning in Awake is to set the Script Execution Order for AstarPath to some time later than default time (see Edit -> Project Settings -> Script Execution Order).
Todo:
Is this still relevant? A call to FindAllModifiers should have before this method is called so the above warning is probably not relevant anymore.
See Also
OnLatePostScan

Reimplemented from GraphModifier.

void RemoveConnections ( GraphNode  node)
private
static void SerializeReferences ( Pathfinding.Serialization.GraphSerializationContext  ctx)
staticpackage

Member Data Documentation

Vector3 clamped1
private
Vector3 clamped2
private
GraphNode connectedNode1
private
GraphNode connectedNode2
private
float costFactor = 1.0f

The connection will be this times harder/slower to traverse.

Note that values lower than 1 will not always make the pathfinder choose this path instead of another path even though this one should lead to a lower total cost unless you also adjust the Heuristic Scale in A* Inspector -> Settings -> Pathfinding or disable the heuristic altogether.

Transform end

End position of the link.

readonly Color GizmosColor = new Color(206.0f/255.0f, 136.0f/255.0f, 48.0f/255.0f, 0.5f)
staticprivate
readonly Color GizmosColorSelected = new Color(235.0f/255.0f, 123.0f/255.0f, 32.0f/255.0f, 1.0f)
staticprivate
bool oneWay = false

Make a one-way connection.

bool postScanCalled = false
private
Dictionary<GraphNode, NodeLink2> reference = new Dictionary<GraphNode, NodeLink2>()
staticprotected

Property Documentation

PointNode endNode
getset
GraphNode EndNode
get
Transform EndTransform
get
PointNode startNode
getset
GraphNode StartNode
get
Transform StartTransform
get

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