From 8722a9920c1f6119bf6e769cba270e63097f8e25 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Thu, 23 May 2024 10:08:29 +0800 Subject: + astar project --- .../ExampleScripts/RecastTileUpdate.cs | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/RecastTileUpdate.cs (limited to 'Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/RecastTileUpdate.cs') diff --git a/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/RecastTileUpdate.cs b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/RecastTileUpdate.cs new file mode 100644 index 0000000..2153625 --- /dev/null +++ b/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/RecastTileUpdate.cs @@ -0,0 +1,50 @@ +using UnityEngine; + +namespace Pathfinding { + /// + /// Updates the recast tile(s) it is in at start, needs RecastTileUpdateHandler. + /// + /// If there is a collider attached to the same GameObject, the bounds + /// of that collider will be used for updating, otherwise + /// only the position of the object will be used. + /// + /// Note: This class needs a RecastTileUpdateHandler somewhere in the scene. + /// See the documentation for that class, it contains more information. + /// + /// Note: This does not use navmesh cutting. If you only ever add + /// obstacles, but never add any new walkable surfaces then you might + /// want to use navmesh cutting instead. See navmeshcutting (view in online documentation for working links). + /// + /// See: RecastTileUpdateHandler + /// + /// Deprecated: Since version 5.0, this component is not necessary, since normal graph updates on recast graphs are now batched together if they update the same tiles. + /// Use e.g. the component instead. + /// + [HelpURL("https://arongranberg.com/astar/documentation/stable/recasttileupdate.html")] + public class RecastTileUpdate : MonoBehaviour { + public static event System.Action OnNeedUpdates; + + void Start () { + ScheduleUpdate(); + } + + void OnDestroy () { + ScheduleUpdate(); + } + + /// Schedule a tile update for all tiles that contain this object + public void ScheduleUpdate () { + var collider = GetComponent(); + + if (collider != null) { + if (OnNeedUpdates != null) { + OnNeedUpdates(collider.bounds); + } + } else { + if (OnNeedUpdates != null) { + OnNeedUpdates(new Bounds(transform.position, Vector3.zero)); + } + } + } + } +} -- cgit v1.1-26-g67d0