public static void DebugDrawPolyline(DebugDrawContext context, params Vector2[] vertices) { var vertexData = new VertexPositionColor[vertices.Length]; for (int i = 0; i < vertices.Length; i++) vertexData[i] = new VertexPositionColor(new Vector3(vertices[i], DEBUG_DRAW_Z), context.Color); DebugDraw(context, vertexData, PrimitiveType.LineStrip); }
public static void DebugDrawPoints(DebugDrawContext context, params Vector2[] points) { var vertexData = new VertexPositionColor[points.Length * 2]; for (int i = 0; i < points.Length; i++) { vertexData[i * 2 + 0] = new VertexPositionColor(new Vector3(points[i], DEBUG_DRAW_Z), context.Color); vertexData[i * 2 + 1] = new VertexPositionColor(new Vector3(points[i] + Vector2.UnitX, DEBUG_DRAW_Z), context.Color); } DebugDraw(context, vertexData, PrimitiveType.LineList); }
public static void DebugDrawCircle(DebugDrawContext context, BoundingSphere sphere) { VertexPositionColor[] vertexData; Graphics3D.GetWireframeModelData(sphere, DEBUG_DRAW_Z, context.Color, out vertexData); DebugDraw(context, vertexData, PrimitiveType.LineStrip); }
private static void DebugDraw(DebugDrawContext context, VertexPositionColor[] vertexData, PrimitiveType primitiveType) { var gfx = AssaultWingCore.Instance.GraphicsDeviceService.GraphicsDevice; DebugEffect.View = context.View; DebugEffect.Projection = context.Projection; DebugEffect.World = context.World; var primitiveCount = primitiveType == PrimitiveType.LineList ? vertexData.Length / 2 : primitiveType == PrimitiveType.LineStrip ? vertexData.Length - 1 : primitiveType == PrimitiveType.TriangleList ? vertexData.Length / 3 : primitiveType == PrimitiveType.TriangleStrip ? vertexData.Length - 2 : 0; if (primitiveCount <= 0) throw new ArgumentException("Invalid primitive type or vertex count"); foreach (var pass in DebugEffect.CurrentTechnique.Passes) { pass.Apply(); gfx.DrawUserPrimitives<VertexPositionColor>(primitiveType, vertexData, 0, primitiveCount); } }