awaitTravel

Drive the integration loop for handle to completion (or cancellation). Suspends. Returns the final TravelResult.

Each step:

  • If handle.isCanceled is true, break.

  • If handle.destination differs from the current direction target (set by TravelHandle.redirect), re-plan from the current position.

  • Compute step distance min(stepSize, remaining), delay by stepDist / velocity, advance position by that step.

  • If within ε of the destination, snap exactly and mark complete.

The agent's position is updated via ContinuousProjection.moveTo at each step, so concurrent spatial queries see the agent moving.