Additional handy debug draw functions
Article was written against Quantum version 1.2.4RC1
Here are a few other static debug draw commands I found useful in Quantum. (Added here to save you trouble!)
My favorites are
Debug2.DrawX(center, size, color)
Debug2.DrawVector(start, end, color, headPercentage)
C#
using Photon.Deterministic;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Quantum
{
public static class Debug2
{
// Debug Draw
public static void DrawX(FPVector2 center, FP size, ColorRGBA color)
{
Draw.Line(center + (new FPVector2(FP.Minus_1, FP.Minus_1) * size), center + (new FPVector2(FP._1, FP._1) * size), color);
Draw.Line(center + (new FPVector2(FP._1, FP.Minus_1) * size), center + (new FPVector2(FP.Minus_1, FP._1) * size), color);
}
public static void DrawCircle(FPVector2 center, FP radius, ColorRGBA ColorRGBA, int detail = 16)
{
FPVector2 prev = new FPVector2(FPMath.Cos(0) * radius, FPMath.Sin(0) * radius) + center;
for (int i = 0; i <= detail; i++)
{
FP t = (i * FP.Pi * FP._2) / detail;
FPVector2 c = new FPVector2(FPMath.Cos(t) * radius, FPMath.Sin(t) * radius) + center;
Draw.Line(prev, c, ColorRGBA);
prev = c;
}
}
public static void DrawRectangle(FPVector2 center, FPVector2 size, ColorRGBA ColorRGBA)
{
Draw.Line(center + (new FPVector2(FP.Minus_1, FP.Minus_1) * size.X), center + (new FPVector2(FP._1, FP.Minus_1) * size.Y), ColorRGBA);
Draw.Line(center + (new FPVector2(FP._1, FP.Minus_1) * size.X), center + (new FPVector2(FP._1, FP._1) * size.Y), ColorRGBA);
Draw.Line(center + (new FPVector2(FP._1, FP._1) * size.X), center + (new FPVector2(FP.Minus_1, FP._1) * size.Y), ColorRGBA);
Draw.Line(center + (new FPVector2(FP.Minus_1, FP._1) * size.X), center + (new FPVector2(FP.Minus_1, FP.Minus_1) * size.Y), ColorRGBA);
}
public static void DrawVector(FPVector2 start, FPVector2 end, ColorRGBA ColorRGBA)
{
DrawVector(start, end, ColorRGBA, FP._0_25);
}
public static void DrawVector(FPVector2 start, FPVector2 end, ColorRGBA ColorRGBA, FP headPercentage)
{
Draw.Line(start, end, ColorRGBA);
FPVector2 delta = (start - end);
FPVector2 perp = new FPVector2(delta.Y, -delta.X).Normalized;
FP headLength = (start - end).Magnitude * headPercentage;
FPVector2 back = end + (start - end).Normalized * headLength;
Draw.Line(end, back + (perp * headPercentage) * FP._0_33, ColorRGBA);
Draw.Line(end, back - (perp * headPercentage) * FP._0_33, ColorRGBA);
}
public static void DrawPolygon(FPVector2[] points, ColorRGBA color)
{
Draw.Line(points[points.Length - 1], points[0], color);
for (int i = 0; i < points.Length - 1; i++)
{
Draw.Line(points[i], points[i + 1], color);
}
}
public static void DrawPolygon(FPVector2 center, FPVector2[] points, FP Rotation, ColorRGBA color)
{
FPVector2[] drawPoints = new FPVector2[points.Length];
FPMatrix2x2 matrix2X2 = new FPMatrix2x2();
matrix2X2.M11 = FPMath.Cos(Rotation);
matrix2X2.M12 = FPMath.Sin(Rotation);
matrix2X2.M21 = -FPMath.Sin(Rotation);
matrix2X2.M22 = FPMath.Cos(Rotation);
for (int i = 0; i < points.Length; i++)
{
drawPoints[i] = matrix2X2 * points[i];
drawPoints[i] = drawPoints[i] + center;
}
DrawPolygon(drawPoints, color);
}
}
}
Back to top