#region CPL License
/*
Nuclex Framework
Copyright (C) 2002-2009 Nuclex Development Labs
This library is free software; you can redistribute it and/or
modify it under the terms of the IBM Common Public License as
published by the IBM Corporation; either version 1.0 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
IBM Common Public License for more details.
You should have received a copy of the IBM Common Public
License along with this library
*/
#endregion
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace Nuclex.Graphics.Debugging {
/// Service for overlaying debugging informations on the scene
public interface IDebugDrawingService {
/// Concatenated View and Projection matrices to use
///
/// Update this once per frame to have your debug overlays appear in the
/// right places. Simply set it to (View * Projection) of your camera.
///
Matrix ViewProjection { get; set; }
/// Draws a line from the starting point to the destination point
/// Starting point of the line
/// Destination point the line will be drawn to
/// Desired color of the line
void DrawLine(Vector3 from, Vector3 to, Color color);
/// Draws a wireframe triangle between three points
/// First corner point of the triangle
/// Second corner point of the triangle
/// Third corner point of the triangle
/// Desired color of the line
void DrawTriangle(Vector3 a, Vector3 b, Vector3 c, Color color);
/// Draws a solid (filled) triangle between three points
/// First corner point of the triangle
/// Second corner point of the triangle
/// Third corner point of the triangle
/// Desired color of the line
void DrawSolidTriangle(Vector3 a, Vector3 b, Vector3 c, Color color);
/// Draws a wireframe box at the specified location
/// Contains the coordinates of the box lesser corner
/// Contains the coordinates of the box greater corner
/// Color of the wireframe to draw
void DrawBox(Vector3 min, Vector3 max, Color color);
/// Draws a solid (filled) box at the specified location
/// Contains the coordinates of the box lesser corner
/// Contains the coordinates of the box greater corner
/// Desired color for the box
void DrawSolidBox(Vector3 min, Vector3 max, Color color);
/// Draws a wireframe arrow into the scene to visualize a vector
/// Location at which to draw the arrow
/// Direction the arrow is pointing into
/// Color of the wireframe to draw
void DrawArrow(Vector3 origin, Vector3 direction, Color color);
/// Draws an arrow into the scene to visualize a vector
/// Location from which the arrow originates
/// Direction into which the arrow is pointing
/// Color of the arrow
void DrawSolidArrow(Vector3 origin, Vector3 direction, Color color);
/// Draws text onto the screen at pixel coordinates
///
/// Location on the screen, in pixels, where the text should be drawn.
///
/// String to be drawn
/// Color the text should have
void DrawString(Vector2 position, string text, Color color);
}
} // namespace Nuclex.Graphics.Debugging