private List <RaceState> GenerateRaceStatesFor25FPS(RaceResult raceResult) { List <RaceState> raceStates; raceStates = new List <RaceState>(); RaceState raceStateA; RaceState raceStateB; int raceStateIndex = 0; double time = 0; double stopTime = Math.Ceiling(raceResult.RaceStates.Last().Time); int timeIndex = 0; raceStateA = raceResult.RaceStates[0]; raceStateB = raceResult.RaceStates[1]; while (time < stopTime) { int frameIndex; for (frameIndex = 0; frameIndex < 25; frameIndex++) { time = timeIndex + frameIndex / 25.0; while (((raceStateIndex + 1) < raceResult.RaceStates.Count) && (time >= raceResult.RaceStates[raceStateIndex + 1].Time)) { raceStateIndex++; if (raceStateIndex < raceResult.RaceStates.Count) { raceStateA = raceStateB; raceStateB = raceResult.RaceStates[raceStateIndex + 1]; } } RaceState raceStateForFrame; //raceStateForFrame = raceResult.RaceStates[raceStateIndex].Copy(); //raceStateForFrame.Time = time; raceStateForFrame = RaceState.CreateInterpolation(raceStateA, raceStateB, time); //raceStateA = raceResult.RaceStates[raceStateIndex]; //raceStateB = raceResult.RaceStates[raceStateIndex + 1]; raceStates.Add(raceStateForFrame); } timeIndex++; time = timeIndex; } return(raceStates); }