Esempio n. 1
0
        public static void Step()
        {
            Frame++;

            // Advance time
            Time.Step();

            if (Time.DeltaTime <= 0.0f)
            {
                return;
            }

            // Update the mouse overs for all nodes in the scenes container.
            Input.BeginFrame();

            GenerateEvents();

            // Update all
            for (var i = 0; i < Window.ViewCount; i++)
            {
                Window.GetViewAt(i).Update();
            }

            while (Time.BeginFixedTimeStep())
            {
                StateMachine.Update(UpdateMode.FixedUpdate);

                for (var i = 0; i < Window.ViewCount; i++)
                {
                    var view = Window.GetViewAt(i);
                    if (view.Scene != null && view.Scene.HasWorld && !view.Scene.IsPaused)
                    {
                        view.Scene.World.Step();
                    }
                }

                Time.EndFixedTimeStep();
            }

            StateMachine.Update(UpdateMode.Update);

            Animation.Step(UpdateMode.Update);

            var gc = Window.DrawBegin();

            _applicationDelegate.DrawBegin(gc);

            Window.Draw();

            _applicationDelegate.DrawEnd(gc);

            Window.DrawEnd();

            Node.ProcessDestroyedNodes();

            Input.EndFrame();
        }