private void SimulationLoop() { var timer = new Stopwatch(); var dt = 0.0f; //float isSimulation = true; while (isSimulation) { timer.Restart(); foreach (var gameObject in objects) { gameObject.OnTick(dt); } if (RenderManager != null) { RenderManager.BeginRender(); } //RenderManager?.BeginRender(); Thread.Sleep(16); timer.Stop(); dt = (float)timer.Elapsed.TotalSeconds; } }
private void SimulationLoop() { var timer = new Stopwatch(); // хранит время, за которое рендерится последний кадр float dt = 0.0f; isSimulation = true; while (isSimulation) { timer.Restart(); PhysicsManager.OnTick(dt); foreach (var gameObject in objects) { gameObject.OnTick(dt); } //var toDestroy = objects.Where(x => x.IsNeedDestroy).ToList(); //foreach (var gameObject in toDestroy) //{ // RemoveObject(gameObject); //} if (RenderManager != null) { RenderManager.RunInUIThread(RemoveAllDestroyObject); RenderManager.RunInUIThread(AttachAllUnattachObject); RenderManager.BeginRender(); } else { RemoveAllDestroyObject(); AttachAllUnattachObject(); } //RenderManager?.BeginRender(); Thread.Sleep(16); timer.Stop(); dt = (float)timer.Elapsed.TotalSeconds; } }
private void SimulationLoop() { var timer = new Stopwatch(); var dt = 0.0f; //float isSimulation = true; while (isSimulation) { timer.Restart(); PhysicsManager.OnTick(dt); foreach (var gameObject in objects) { gameObject.OnTick(dt); } if (RenderManager != null) { RenderManager.RunInUIThread(RemoveAllDestroyObject); RenderManager.RunInUIThread(AttachAllUnattachObject); RenderManager.BeginRender(); } else { RemoveAllDestroyObject(); AttachAllUnattachObject(); } Thread.Sleep(16); timer.Stop(); dt = (float)timer.Elapsed.TotalSeconds; } }