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;
}
}
}
|