public void Update(float deltaSeconds) { if (IsPlaying) { UpdateScheduler.Update(deltaSeconds, EUpdatePriority.ResourceLoading, EUpdatePriority.PrePhysics); PhysicsWorld.Update(deltaSeconds); UpdateScheduler.Update(deltaSeconds, EUpdatePriority.PostPhysics, EUpdatePriority.Latest); } else { UpdateScheduler.Update(deltaSeconds, EUpdatePriority.Editor, EUpdatePriority.ResourceLoading); } GameConsole.Draw(ViewManager.ScreenWidth, ViewManager.ScreenHeight); ViewManager.GetViewInfo(out SSceneViewInfo viewInfo); #region MenuBar m_performanceCounter.UpdateFrametime(deltaSeconds); ImGui.BeginMainMenuBar(); ImGui.Text("FPS: " + (1 / m_performanceCounter.SmoothedFrametime).ToString("n2")); ImGui.Text(string.Format("CameraPosition X: {0:0.00} Y: {1:0.00} Z: {2:0.00}", viewInfo.ViewLocation.X, viewInfo.ViewLocation.Y, viewInfo.ViewLocation.Z)); ImGui.EndMainMenuBar(); #endregion CRenderer.Instance.ActiveScene.UpdateViewInfo(in viewInfo); for (int i = 0; i < m_pendingDestroyEntities.Count; i++) { InternalDestroyEntity(m_pendingDestroyEntities[i]); } m_pendingDestroyEntities.Clear(); }
public override void Run() { while (!ExitRequested) { UpdateMonitor.NewFrame(); using (UpdateMonitor.BeginCollecting(PerformanceCollectionType.Scheduler)) { UpdateScheduler.Update(); } using (UpdateMonitor.BeginCollecting(PerformanceCollectionType.Update)) { UpdateSubTree(); using (var buffer = DrawRoots.Get(UsageType.Write)) buffer.Object = GenerateDrawNodeSubtree(buffer.Object); } using (UpdateMonitor.BeginCollecting(PerformanceCollectionType.Sleep)) { UpdateClock.ProcessFrame(); } } }
public HeadlessGameHost(string gameName = @"", bool bindIPC = false) : base(gameName, bindIPC) { Size = Vector2.One; //we may be expected to have a non-zero size by components we run. UpdateScheduler.Update(); Dependencies.Cache(Storage = new DesktopStorage(string.Empty)); }
public HeadlessGameHost(string gameName = @"", bool bindIPC = false) : base(gameName, bindIPC) { Size = Vector2.One; //we may be expected to have a non-zero size by components we run. UpdateScheduler.Update(); }