private Vector TestProjectile(Projectile proj, double timeIncrement, int nSteps) { double oldTime = Time; var positions = new List <Vector>(); var velocities = new List <Vector>(); int index = Projectiles.FindIndex((a) => a == proj); foreach (var projectile in Projectiles) { positions.Add(projectile.Position); velocities.Add(projectile.Velocity); } RunEngine(timeIncrement, nSteps); Vector response = Projectiles[index].Position; // Reset everything for (int i = 0; i < Projectiles.Count; ++i) { Projectiles[i].Position = positions[i]; Projectiles[i].Velocity = velocities[i]; } Time = oldTime; return(response); }