using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using System.Collections.Generic; namespace Jumpy { // TODO: add a WriteLine sort of functionality. static class Debug { struct DebugRect { public Rectangle rect; public Color color; public DebugRect(Rectangle rect, Color color) { this.rect = rect; this.color = color; } } public static bool Enabled; static List rects = new List(); static Texture2D whiteTexture; public static void Initialize(GraphicsDevice graphics) { whiteTexture = new Texture2D(graphics, 1, 1); whiteTexture.SetData(new Color[] { Color.White }); } public static void Clear() { rects.Clear(); } public static void AddRect(Rectangle rect, Color color) { rects.Add(new DebugRect(rect, color)); } public static void Draw(SpriteBatch spriteBatch) { if (!Enabled) { return; } foreach (var debugRect in rects) { var rect = debugRect.rect; var color = debugRect.color; // top side spriteBatch.Draw( whiteTexture, new Rectangle(rect.Left, rect.Top, rect.Width, 1), color); // bottom side spriteBatch.Draw( whiteTexture, new Rectangle(rect.Left, rect.Bottom - 1, rect.Width, 1), color); // left side spriteBatch.Draw( whiteTexture, new Rectangle(rect.Left, rect.Top, 1, rect.Height), color); // right side spriteBatch.Draw( whiteTexture, new Rectangle(rect.Right - 1, rect.Top, 1, rect.Height), color); } } } }