Get Distance at Location Along Spline

I’m using this one:



float ASomething::GetDistanceAlongSplineAtWorldLocation(const USplineComponent* InSpline, const FVector InWorldLocation)
{
    if (!InSpline)
        return 0.f;

    auto InputKeyFloat = InSpline->FindInputKeyClosestToWorldLocation(InWorldLocation);
    auto InputKey = FMath::TruncToInt(InputKeyFloat);
    auto A = InSpline->GetDistanceAlongSplineAtSplinePoint(InputKey);
    auto B = InSpline->GetDistanceAlongSplineAtSplinePoint(InputKey + 1);

    return A + ((B - A) * (InputKeyFloat - InputKey));
}


Seems to work pretty well.