Example #1
0
        protected override void Draw(GameTime gameTime)
        {
            try
            {
                smartFPS.Update((float)gameTime.ElapsedGameTime.TotalSeconds);
                GraphicsDevice.Clear(Color.CornflowerBlue);
                spriteBatch.Begin(
                    SpriteSortMode.BackToFront,
                    BlendState.AlphaBlend,
                    null,
                    null,
                    null,
                    null,
                    Camera.GetTransformation(GraphicsDevice)
                    );
                spriteBatchUi.Begin(
                    SpriteSortMode.BackToFront,
                    BlendState.AlphaBlend,
                    null,
                    null,
                    null,
                    null,
                    CameraUI.GetTransformation(GraphicsDevice)
                    );


                spriteBatch.DrawString(
                    SpriteFont
                    , $@"FPS: {smartFPS.AverageFramesPerSecond}
LOG: {string.Join("\n", LOG)}"
                    , new Vector2(500, 2000)
                    , Color.Black
                    , 0
                    , Vector2.Zero
                    , 25
                    , SpriteEffects.None
                    , 0);

                for (var i = 0; i < GameLoop.GameObjects.Count; i++)
                {
                    var obj = GameLoop.GameObjects[i];
                    foreach (var frame in obj.Animation.GetFrame())
                    {
                        (obj.Animation.RenderOnUiLayer ? spriteBatchUi : spriteBatch).Draw(
                            texture: Sprites[frame.Texture]
                            , destinationRectangle: new Rectangle(
                                (frame.Anchor.Position + frame.Offset).ToPoint()
                                , new Point(frame.Width, frame.Height)
                                )
                            , sourceRectangle: frame.SourceRectangle
                            , color: frame.Color
                            , rotation: frame.Rotation
                            , origin: frame.RotationAnchor
                            , effects: frame.Flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None
                            , layerDepth: 0f
                            );
                    }
                }

                while (RectanglesToRenderUI.Count > 0)
                {
                    var rectangle = RectanglesToRenderUI.Dequeue();
                    DrawBorder(rectangle, 2, Color.Red, spriteBatchUi);
                }

                while (RectanglesToRender.Count > 0)
                {
                    var rectangle = RectanglesToRender.Dequeue();
                    DrawBorder(rectangle, 50, Color.Green, spriteBatch);
                }

                spriteBatch.End();
                spriteBatchUi.End();
            }
            catch //(System.Exception ex)
            {
            }

            base.Draw(gameTime);
        }