2023-08-01 06:49:57 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace Pathfinding {
|
|
|
|
/// <summary>
|
|
|
|
/// 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
|
|
|
|
/// </summary>
|
|
|
|
[AddComponentMenu("Pathfinding/Navmesh/RecastTileUpdate")]
|
2024-02-20 18:34:40 +00:00
|
|
|
[HelpURL("https://arongranberg.com/astar/documentation/stable/class_pathfinding_1_1_recast_tile_update.php")]
|
2023-08-01 06:49:57 +00:00
|
|
|
public class RecastTileUpdate : MonoBehaviour {
|
|
|
|
public static event System.Action<Bounds> OnNeedUpdates;
|
|
|
|
|
|
|
|
void Start () {
|
|
|
|
ScheduleUpdate();
|
|
|
|
}
|
|
|
|
|
|
|
|
void OnDestroy () {
|
|
|
|
ScheduleUpdate();
|
|
|
|
}
|
|
|
|
|
|
|
|
/// <summary>Schedule a tile update for all tiles that contain this object</summary>
|
|
|
|
public void ScheduleUpdate () {
|
|
|
|
var collider = GetComponent<Collider>();
|
|
|
|
|
|
|
|
if (collider != null) {
|
|
|
|
if (OnNeedUpdates != null) {
|
|
|
|
OnNeedUpdates(collider.bounds);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (OnNeedUpdates != null) {
|
|
|
|
OnNeedUpdates(new Bounds(transform.position, Vector3.zero));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|