Class DynamicGridObstacle Extends GraphModifier

Public

Attach this script to any obstacle with a collider to enable dynamic updates of the graphs around it.

When the object has moved or rotated at least updateError world units then it will call AstarPath.UpdateGraphs and update the graph around it.

Make sure that any children colliders do not extend beyond the bounds of the collider attached to the GameObject that the DynamicGridObstacle component is attached to since this script only updates the graph around the bounds of the collider on the same GameObject.

An update will be triggered whenever the bounding box of the attached collider has changed (moved/expanded/etc.) by at least updateError world units or if the GameObject has rotated enough so that the outmost point of the object has moved at least updateError world units.

This script works with both 2D colliders and normal 3D colliders.

Note

This script works best with a GridGraph, PointGraph or LayerGridGraph You can use this with recast graphs as well. However since recast graph updates are much slower it is recommended to use the NavmeshCut component if at all possible.

Public Methods

DoUpdateGraphs ()

Update the graphs around this object.

Public
OnPostScan ()

Called right after all graphs have been scanned.

Public

Public Variables

checkTime

Time in seconds between bounding box checks.

Public
updateError

The minimum change in world units along one of the axis of the bounding box of the collider to trigger a graph update.

Public

Inherited Public Members

EventType

GraphModifier event type.

Public
FindAllModifiers ()
Public Static
OnGraphsPostUpdate ()

Called after graphs have been updated using GraphUpdateObjects or navmesh cutting.

Public
OnGraphsPostUpdateBeforeAreaRecalculation ()

Called after graphs have been updated.

Public
OnGraphsPreUpdate ()

Called before graphs are updated using GraphUpdateObjects.

Public
OnLatePostScan ()

Called at the end of the scanning procedure.

Public
OnPostCacheLoad ()

Called after cached graphs have been loaded.

Public
OnPostGraphLoad ()

Called after a graph has been deserialized and loaded.

Public
OnPreScan ()

Called right before graphs are going to be scanned.

Public
TriggerEvent (type)

Triggers an event for all active graph modifiers.

Public Static

Private/Protected Members

Awake ()
Protected
BoundsVolume (b)

Volume of a Bounds object.

Private Static
GetModifiersOfType<T> ()
Protected Static
OnDestroy ()
Protected
OnDisable ()

Revert graphs when disabled.

Protected
OnEnable ()

Adds this modifier to list of active modifiers.

Protected
OnUpgradeSerializedData (migrations, unityThread)

Handle serialization backwards compatibility.

Protected
Reset ()

Handle serialization backwards compatibility.

Protected
Update ()
Private
UpgradeSerializedData (isUnityThread)
Protected
bounds
Private
coll

Collider to get bounds information from.

Private
coll2D

2D Collider to get bounds information from

Private
colliderEnabled
Private
lastCheckTime
Private
pendingGraphUpdates
Private
prevBounds

Bounds of the collider the last time the graphs were updated.

Private
prevEnabled

True if the collider was enabled last time the graphs were updated.

Private
prevRotation

Rotation of the collider the last time the graphs were updated.

Private
tr

Cached transform component.

Private
uniqueID

Unique persistent ID for this component, used for serialization.

Protected
usedIDs

Maps persistent IDs to the component that uses it.

Protected Static