Beispiel #1
0
        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();
        }
Beispiel #2
0
        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));
 }
Beispiel #4
0
 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();
 }