Garry's Mod Wiki

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
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 )

Page Links


Special Pages


Wikis

?

Render Time: 43ms

Session 0
DB GetPage 3
Generate Html 15
SaveChanges 11
Render Body 0
Render Sidebar 12