summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/ExampleScenes/ExampleScripts/RecastTileUpdate.cs
blob: 2153625025a4c876bb40765e22476cabd62d2b17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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
	///
	/// 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 <see cref="DynamicGridObstacle"/> component instead.
	/// </summary>
	[HelpURL("https://arongranberg.com/astar/documentation/stable/recasttileupdate.html")]
	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));
				}
			}
		}
	}
}