public TrackPosition GetTrackPosition() { var section = waypoints.track.Section(waypoints.TrackDistance(Distance)); var midpoint = (section.left + section.right) * 0.5f; var tangent = (section.right - midpoint).normalized; var width = (section.right - section.left).magnitude; var offset = Vector3.Dot(transform.position - midpoint, tangent) / (width * 0.5f); TrackPosition p; p.distance = section.trackdistance; p.offset = offset; p.width = width; return(p); }