summaryrefslogtreecommitdiff
path: root/Other/AstarPathfindingDemo/Packages/com.arongranberg.astar/Graphs/Grid/Jobs/JobCheckCollisions.cs
blob: 71a3d2c861d863220988d4d01ad40c1964b7c4f3 (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
using UnityEngine;
using Unity.Collections;
using Pathfinding.Jobs;

namespace Pathfinding.Graphs.Grid.Jobs {
	/// <summary>
	/// Checks if nodes are obstructed by obstacles or not.
	///
	/// See: <see cref="GraphCollision"/>
	/// </summary>
	struct JobCheckCollisions : IJobTimeSliced {
		[ReadOnly]
		public NativeArray<Vector3> nodePositions;
		public NativeArray<bool> collisionResult;
		public GraphCollision collision;
		int startIndex;

		public void Execute () {
			Execute(TimeSlice.Infinite);
		}

		public bool Execute (TimeSlice timeSlice) {
			for (int i = startIndex; i < nodePositions.Length; i++) {
				collisionResult[i] = collisionResult[i] && collision.Check(nodePositions[i]);
				if ((i & 127) == 0 && timeSlice.expired) {
					startIndex = i + 1;
					return false;
				}
			}
			return true;
		}
	}
}