public double GetValue(Func <TimedTelemetrySnapshot, double> valueExtractFunction, TimedTelemetrySnapshot telemetrySnapshot, XAxisKind xAxisKind)
 {
     return(valueExtractFunction(telemetrySnapshot));
 }
        public double GetValue(Func<TimedTelemetrySnapshot, double> valueExtractFunction, TimedTelemetrySnapshot telemetrySnapshot, XAxisKind xAxisKind)
        {
            if (_referenceLap == null)
            {
                return valueExtractFunction(telemetrySnapshot);
            }

            double toCompareValue = xAxisKind == XAxisKind.LapDistance ? _referenceLap.GetValueByDistance(Distance.FromMeters(telemetrySnapshot.PlayerData.LapDistance), valueExtractFunction) : _referenceLap.GetValueByTime(telemetrySnapshot.LapTime, valueExtractFunction);

            return valueExtractFunction(telemetrySnapshot) - toCompareValue;
        }