|
|
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<DebugRect> rects = new List<DebugRect>(); 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); } } } }
|