Advertisement
Guest User

Calculate Path Cost

a guest
Apr 4th, 2022
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. //----------------------------------------------------------------------------------------
  2. public static float CalculatePathCost(Vector3[] _pathCorners, int _pathLength, NavMeshQueryFilter _queryFilter)
  3. {
  4. float cost = 0;
  5. NavMeshHit hit;
  6. NavMesh.SamplePosition(_pathCorners[0], out hit, 0.1f, NavMesh.AllAreas);
  7. var rayStart = _pathCorners[0];
  8. var mask = hit.mask;
  9. var areaIndex = IndexFromMask(mask);
  10.  
  11. for (var index = 1; index < _pathLength; ++index)
  12. {
  13. var maxTries = 5;
  14. do
  15. {
  16. var corner = _pathCorners[index];
  17. if (NavMesh.Raycast(rayStart, corner, out hit, mask))
  18. {
  19. cost += _queryFilter.GetAreaCost(areaIndex) * hit.distance;
  20. if (hit.mask != 0)
  21. mask = hit.mask;
  22. areaIndex = IndexFromMask(mask);
  23. rayStart = hit.position;
  24.  
  25. if (hit.mask == 0)
  26. rayStart += (corner - rayStart).normalized * 0.05f;
  27. }
  28. else
  29. {
  30. rayStart += (corner - rayStart).normalized * 0.05f;
  31. }
  32.  
  33. maxTries--;
  34. } while (hit.hit && maxTries > 0);
  35. }
  36. return cost;
  37. }
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement