Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function findPath( %nodes, %node, %visited, %dist, %target )
- {
- if ( !isObject( %node ) || !isObject( %target ) )
- {
- return -1;
- }
- if ( !strLen( %dist ) )
- {
- %dist = 0;
- }
- %node = %node.getID();
- %target = %target.getID();
- %list = getNeighborNodes( %nodes, %node );
- %visited = strListAppend( %visited, " ", %node );
- if ( !strLen( %list ) || !( %count = getWordCount( %list ) ) )
- {
- return %dist SPC %visited;
- }
- for ( %i = 0 ; %i < %count ; %i++ )
- {
- %temp = getWord( %list, %i );
- if ( %temp $= %target )
- {
- %dist += vectorDist( %node.getPosition(), %temp.getPosition() );
- %visited = %visited SPC %temp;
- echo( "PATH (Distance: " @ %dist @ "): " @ %visited );
- return %dist SPC %visited;
- }
- if ( strListHas( %visited, " ", %temp ) )
- {
- continue;
- }
- %return = findPath( %nodes, %temp, %visited, %dist + vectorDist( %node.getPosition(), %temp.getPosition() ), %target );
- if ( %return $= "-1" )
- {
- continue;
- }
- %distance = getWord( %return, 0 );
- if ( %distance < %min || !strLen( %min ) )
- {
- %min = %distance;
- %ideal = getWords( %return, 1, getWordCount( %return ) );
- }
- }
- if ( strLen( %ideal ) )
- {
- return %dist SPC %ideal;
- }
- return -1;
- }
Add Comment
Please, Sign In to add comment