public void runGameTick(SimulationParams simulationParams) { foreach (CelestialBody celestialBody in CurMap.celestialBodies) { celestialBody.X += celestialBody.VX * simulationParams.DeltaTime.TotalSeconds; celestialBody.Y += celestialBody.VY * simulationParams.DeltaTime.TotalSeconds; if (celestialBody.X > 800 - celestialBody.Radius) { celestialBody.VX = -celestialBody.VX; celestialBody.X = 800 - celestialBody.Radius; } else if (celestialBody.X < 0 + celestialBody.Radius) { celestialBody.VX = -celestialBody.VX; celestialBody.X = celestialBody.Radius; } if (celestialBody.Y > 600 - celestialBody.Radius) { celestialBody.VY = -celestialBody.VY; celestialBody.Y = 600 - celestialBody.Radius; } else if (celestialBody.Y < 0 + celestialBody.Radius) { celestialBody.VY = -celestialBody.VY; celestialBody.Y = celestialBody.Radius; } } if (simulationParams.TotalTime > TimeSpan.FromMilliseconds(100)) { Console.WriteLine("adding new timestamp at {0}", DateTime.UtcNow); newTimeStamp(TimeStamps.LastOrDefault().Key + simulationParams.TotalTime); simulationParams.TotalTime = TimeSpan.Zero; } }
public void mapBackFiveSeconds() { var timestamp = TimeStamps.LastOrDefault().Key - TimeSpan.FromSeconds(5); if (timestamp > TimeStamps.FirstOrDefault().Key) { TimeStamps = TimeStamps.Where(k => k.Key <= timestamp).ToList().ToDictionary(k => k.Key, v => v.Value); CurMap = TimeStamps.LastOrDefault().Value; } }