Guest User

Untitled

a guest
Jun 23rd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. function findPath( %nodes, %node, %visited, %dist, %target )
  2. {
  3. if ( !isObject( %node ) || !isObject( %target ) )
  4. {
  5. return -1;
  6. }
  7.  
  8. if ( !strLen( %dist ) )
  9. {
  10. %dist = 0;
  11. }
  12.  
  13. %node = %node.getID();
  14. %target = %target.getID();
  15.  
  16. %list = getNeighborNodes( %nodes, %node );
  17. %visited = strListAppend( %visited, " ", %node );
  18.  
  19. if ( !strLen( %list ) || !( %count = getWordCount( %list ) ) )
  20. {
  21. return %dist SPC %visited;
  22. }
  23.  
  24. for ( %i = 0 ; %i < %count ; %i++ )
  25. {
  26. %temp = getWord( %list, %i );
  27.  
  28. if ( %temp $= %target )
  29. {
  30. %dist += vectorDist( %node.getPosition(), %temp.getPosition() );
  31. %visited = %visited SPC %temp;
  32.  
  33. echo( "PATH (Distance: " @ %dist @ "): " @ %visited );
  34. return %dist SPC %visited;
  35. }
  36.  
  37. if ( strListHas( %visited, " ", %temp ) )
  38. {
  39. continue;
  40. }
  41.  
  42. %return = findPath( %nodes, %temp, %visited, %dist + vectorDist( %node.getPosition(), %temp.getPosition() ), %target );
  43.  
  44. if ( %return $= "-1" )
  45. {
  46. continue;
  47. }
  48.  
  49. %distance = getWord( %return, 0 );
  50.  
  51. if ( %distance < %min || !strLen( %min ) )
  52. {
  53. %min = %distance;
  54. %ideal = getWords( %return, 1, getWordCount( %return ) );
  55. }
  56. }
  57.  
  58. if ( strLen( %ideal ) )
  59. {
  60. return %dist SPC %ideal;
  61. }
  62.  
  63. return -1;
  64. }
Add Comment
Please, Sign In to add comment