public override void DrawPolygon(b2Vec2[] vertices, int vertexCount, b2Color color) { if (!primitiveBatch.IsReady()) { throw new InvalidOperationException("BeginCustomDraw must be called before drawing anything."); } for (int i = 0; i < vertexCount - 1; i++) { primitiveBatch.AddVertex(vertices[i].ToCCVector2() * PTMRatio, color.ToCCColor4B(), PrimitiveType.LineList); primitiveBatch.AddVertex(vertices[i + 1].ToCCVector2() * PTMRatio, color.ToCCColor4B(), PrimitiveType.LineList); } primitiveBatch.AddVertex(vertices[vertexCount - 1].ToCCVector2() * PTMRatio, color.ToCCColor4B(), PrimitiveType.LineList); primitiveBatch.AddVertex(vertices[0].ToCCVector2() * PTMRatio, color.ToCCColor4B(), PrimitiveType.LineList); }
public static void DrawLine(CCPoint origin, CCPoint destination, CCColor4B color) { var a = origin; var b = destination; var n = CCPoint.Normalize(CCPoint.PerpendicularCCW(a - b)); var lww = LineWidth * 0.5f; var nw = n * lww; var v0 = b - nw; var v1 = b + nw; var v2 = a - nw; var v3 = a + nw; // Triangles from beginning to end batch.AddVertex(v1, color, PrimitiveType.TriangleList); batch.AddVertex(v2, color, PrimitiveType.TriangleList); batch.AddVertex(v0, color, PrimitiveType.TriangleList); batch.AddVertex(v1, color, PrimitiveType.TriangleList); batch.AddVertex(v2, color, PrimitiveType.TriangleList); batch.AddVertex(v3, color, PrimitiveType.TriangleList); }