Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/Assets/AstarPathfindingProject/Modifiers/RaycastModifier.cs b/Assets/AstarPathfindingProject/Modifiers/RaycastModifier.cs
- index 7e0c5157..c1b68b0b 100644
- --- a/Assets/AstarPathfindingProject/Modifiers/RaycastModifier.cs
- +++ b/Assets/AstarPathfindingProject/Modifiers/RaycastModifier.cs
- @@ -142,6 +142,16 @@ namespace Pathfinding {
- bool canBeOriginalNodes = points.Count == p.path.Count;
- int startIndex = 0;
- + int[] nodeGroup = ArrayPool<int>.Claim(points.Count);
- + nodeGroup[0] = 0;
- + for (int i = 1; i < points.Count; i++) {
- + if (Mathf.Abs(points[i].y - points[i-1].y) < 0.01f) {
- + nodeGroup[i] = nodeGroup[i-1];
- + } else {
- + nodeGroup[i] = nodeGroup[i-1]+1;
- + }
- + }
- +
- while (startIndex < points.Count) {
- Vector3 start = points[startIndex];
- var startNode = canBeOriginalNodes && points[startIndex] == (Vector3)p.path[startIndex].position ? p.path[startIndex] : null;
- @@ -157,7 +167,7 @@ namespace Pathfinding {
- }
- Vector3 end = points[endIndex];
- var endNode = canBeOriginalNodes && end == (Vector3)p.path[endIndex].position ? p.path[endIndex] : null;
- - if (!ValidateLine(startNode, endNode, start, end)) break;
- + if (!ValidateLine(startNode, endNode, start, end) && nodeGroup[endIndex] == nodeGroup[startIndex]) break;
- mn = mx;
- mx *= 2;
- }
- @@ -168,7 +178,7 @@ namespace Pathfinding {
- Vector3 end = points[endIndex];
- var endNode = canBeOriginalNodes && end == (Vector3)p.path[endIndex].position ? p.path[endIndex] : null;
- - if (ValidateLine(startNode, endNode, start, end)) {
- + if (ValidateLine(startNode, endNode, start, end) && nodeGroup[endIndex] == nodeGroup[startIndex]) {
- mn = mid;
- } else {
- mx = mid;
- @@ -177,6 +187,7 @@ namespace Pathfinding {
- startIndex += mn;
- }
- + ArrayPool<int>.Release(ref nodeGroup);
- Memory.Swap(ref buffer, ref points);
- buffer.ClearFast();
- return points;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement