|
|
@ -32,23 +32,30 @@ namespace SemiColinGames { |
|
|
|
// Lines in excess of MAX_LINES get dropped on the floor.
|
|
|
|
const int MAX_LINES = 2000; |
|
|
|
const int MAX_LINE_VERTICES = MAX_LINES * 2; |
|
|
|
|
|
|
|
static int lineIdx = 0; |
|
|
|
static readonly VertexPositionColor[] lineVertices = new VertexPositionColor[MAX_LINE_VERTICES]; |
|
|
|
static VertexPositionColor[] lineVertices; |
|
|
|
static VertexBuffer vertexBuffer; |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void Initialize(GraphicsDevice graphics) { |
|
|
|
lineVertices = new VertexPositionColor[MAX_LINE_VERTICES]; |
|
|
|
vertexBuffer?.Dispose(); |
|
|
|
vertexBuffer = new VertexBuffer( |
|
|
|
graphics, typeof(VertexPositionColor), MAX_LINE_VERTICES, BufferUsage.WriteOnly); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void WriteLine(string s) { |
|
|
|
System.Diagnostics.Debug.WriteLine(s); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void WriteLine(string s, params object[] args) { |
|
|
|
System.Diagnostics.Debug.WriteLine(s, args); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void Clear(bool paused) { |
|
|
|
toasts.Clear(); |
|
|
|
if (!paused) { |
|
|
@ -56,15 +63,18 @@ namespace SemiColinGames { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void AddToast(string s) { |
|
|
|
toasts.AddLast(s); |
|
|
|
} |
|
|
|
|
|
|
|
// FPS text is always displayed as the first toast (if set).
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void SetFpsText(string s) { |
|
|
|
toasts.AddFirst(s); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void AddRect(Rectangle rect, Color color) { |
|
|
|
AddLine(rect.Left, rect.Top + 1, rect.Right, rect.Top + 1, color); |
|
|
|
AddLine(rect.Left + 1, rect.Top + 1, rect.Left + 1, rect.Bottom, color); |
|
|
@ -72,6 +82,7 @@ namespace SemiColinGames { |
|
|
|
AddLine(rect.Left + 1, rect.Bottom, rect.Right, rect.Bottom, color); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void AddRect(AABB box, Color color) { |
|
|
|
Rectangle rect = new Rectangle( |
|
|
|
(int) (box.Position.X - box.HalfSize.X), (int) (box.Position.Y - box.HalfSize.Y), |
|
|
@ -79,6 +90,7 @@ namespace SemiColinGames { |
|
|
|
AddRect(rect, color); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void AddLine(Point start, Point end, Color color) { |
|
|
|
if (lineIdx >= MAX_LINE_VERTICES) { |
|
|
|
return; |
|
|
@ -88,14 +100,17 @@ namespace SemiColinGames { |
|
|
|
lineIdx += 2; |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void AddLine(int p1x, int p1y, int p2x, int p2y, Color color) { |
|
|
|
AddLine(new Point(p1x, p1y), new Point(p2x, p2y), color); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void AddLine(Vector2 start, Vector2 end, Color color) { |
|
|
|
AddLine(start.ToPoint(), end.ToPoint(), color); |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void DrawToasts(SpriteBatch spriteBatch) { |
|
|
|
if (!Enabled) { |
|
|
|
return; |
|
|
@ -111,6 +126,7 @@ namespace SemiColinGames { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
[System.Diagnostics.Conditional("DEBUG")] |
|
|
|
public static void Draw(GraphicsDevice graphics, BasicEffect lightingEffect) { |
|
|
|
if (!Enabled) { |
|
|
|
return; |
|
|
|