public void GameLoop() { timer = new BulletHell.Time.Timer(); frameTimer = new BulletHell.Time.Timer(); eventTimer = new BulletHell.Time.Timer(); game.ResetTime(); Thread renderThread = new Thread(this.ASynchGameLoop); renderThread.Start(); while (this.Created) { eventTimer.Reset(); Application.DoEvents(); while (eventTimer.Time <= 30) { Thread.Yield(); } } }
public void ASynchGameLoop() { int count = 0, FRAMES = 30; while (this.Created) { if (++count == FRAMES) { fr = 1000 * (double)(FRAMES) / (double)frameTimer.Time; //Console.WriteLine("FR: {0}", fr); frameTimer.Reset(); count = 0; } entityCount = game.EntityCount;// game.Entities.Count(); timer.Reset(); GameLogic(); RenderScene(); while (timer.Time < 10) { Thread.Yield(); } } }
public void ResetTime() { gameTimer.Reset(); timeRateFunc = new PolyFunc <double, double>(curTimeRate); timeFunc = timeRateFunc.FI; }