using UnityEngine; using Unity.Collections; using Pathfinding.Jobs; namespace Pathfinding.Graphs.Grid.Jobs { /// /// Checks if nodes are obstructed by obstacles or not. /// /// See: /// struct JobCheckCollisions : IJobTimeSliced { [ReadOnly] public NativeArray nodePositions; public NativeArray 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; } } }