private void RenderLoop() { var start = DateTime.Now; var lastFrame = DateTime.Now; while (true) { var frameStart = DateTime.Now; var elapsed = frameStart - lastFrame; var totalElapsed = DateTime.Now - start; var time = new AppTime(elapsed.TotalSeconds, totalElapsed.TotalSeconds); lock (stateLock) { if (interrupt) { return; } if (!enabled) { continue; } } Update(time); Draw(time); DrawToConsole(); lastFrame = frameStart; // this should keep the CPU usage down to a minimum // since we dont need super fast rendering, this is fine. Thread.Sleep(UPDATE_INTERVAL); } }
protected abstract void Update(AppTime appTime);
protected abstract void Draw(AppTime appTime);