Here’s what I noticed when debugging the path following component code:
In UPathFollowingComponent::UpdatePathSegment() there is the following conditional statement
else if (MoveSegmentEndIndex > PreciseAcceptanceRadiusCheckStartNodeIndex && HasReachedDestination(CurrentLocation))
In the case I mentioned above the MoveSegmentEndIndex is 1 and the PreciseAcceptanceRadiusCheckStartNodeIndex is 0 so we also check HasReachedDestination(CurrentLocation).
Within that function, GoalLocation is set as follows
FVector GoalLocation = *Path->GetPathPointLocation(Path->GetPathPoints().Num() - 1);
but there was a recent change to the engine code which then sets GoalLocation equal to the CurrentDestination which is the end of the current segment. The current segment will not be equal to the location of the goal actor if we’re not on the last segment of the path yet. So HasReachedDestination(CurrentLocation) will return true if the character is within the acceptance radius of the end of the current segment instead, not within the acceptance radius of the goal actor.
Maybe I’m misunderstanding the goal of these recent changes but this logic seems incorrect to me.