public void AddGui(IImguiRenderer renderer) { ClientJobManager.I.ReserveJob(async() => { m_VeldridWindow.AddImguiRenderer(renderer); }); }
public void RunLoop() { var timeSlicePerUpdateMSec = m_Config.TimeSlicePerUpdateMSec; var timer = new Stopwatch(); var elapsedTimeMSec = 0L; var veldridWindow = new VeldridWindow(); veldridWindow.Open("Simple Chat Client"); veldridWindow.AddImguiRenderer(new LoginWindow()); ClientGui.I.Initialize(veldridWindow); timer.Start(); while (true) { var currentElapsedTime = timer.ElapsedMilliseconds; var deltaTimeMSec = currentElapsedTime - elapsedTimeMSec; elapsedTimeMSec = currentElapsedTime; ClientJobManager.I.Update().Wait(); if (veldridWindow.IsWindowExist) { veldridWindow.Update((int)deltaTimeMSec); } else { break; } var updateConsumedTime = timer.ElapsedMilliseconds - elapsedTimeMSec; var sleepTime = timeSlicePerUpdateMSec - updateConsumedTime; if (sleepTime > 0) { Thread.Sleep((int)sleepTime); } } ClientGui.I.Destroy(); }