# PathFollower:Compute

boolean PathFollower:Compute( NextBot from, Vector to, function generator = nil )

# Description

Compute shortest path from bot to 'goal' via A* algorithm.

# Arguments

1 NextBot from
The nextbot we're generating for. This can also be a nextbot player (player.CreateNextbot).
2 Vector to
To point
3 function generator = nil
A funtion that allows you to alter the path generation. See example below for the default function.

# Returns

1 boolean
• If returns true, path was found to the goal position.
• If returns false, path may either be invalid (use IsValid() to check), or valid but doesn't reach all the way to the goal.

## Example

The default path generator. You do not have to provide the PathFollower.Compute any generator functions if you want to use the default generator.

path:Compute( self, pos, function( area, fromArea, ladder, elevator, length ) if ( !IsValid( fromArea ) ) then // first area in path, no cost return 0 else if ( !self.loco:IsAreaTraversable( area ) ) then // our locomotor says we can't move here return -1 end // compute distance traveled along path so far local dist = 0 if ( IsValid( ladder ) ) then dist = ladder:GetLength() elseif ( length > 0 ) then // optimization to avoid recomputing length dist = length else dist = ( area:GetCenter() - fromArea:GetCenter() ):GetLength() end local cost = dist + fromArea:GetCostSoFar() // check height change local deltaZ = fromArea:ComputeAdjacentConnectionHeightChange( area ) if ( deltaZ >= self.loco:GetStepHeight() ) then if ( deltaZ >= self.loco:GetMaxJumpHeight() ) then // too high to reach return -1 end // jumping is slower than flat ground local jumpPenalty = 5 cost = cost + jumpPenalty * dist elseif ( deltaZ < -self.loco:GetDeathDropHeight() ) then // too far to drop return -1 end return cost end end )