public void Render() { if (!Enabled) { return; } lineManager.ClearAllLines(); var data = physXScene.GetDebugRenderable(); if (data.PointCount > 0) { DebugPoint[] points = data.GetDebugPoints(); for (int x = 0; x < data.LineCount; x++) { lineManager.AddCenteredBox(points[x].Point.dx(), 0.01f, Int32ToColor(points[x].Color).dx()); } } if (data.LineCount > 0) { DebugLine[] lines = data.GetDebugLines(); for (int x = 0; x < data.LineCount; x++) { DebugLine line = lines[x]; Color4 color4 = Int32ToColor(line.Color).dx(); color4.Alpha = 255; // Fix alpha lineManager.AddLine(line.Point0.dx(), line.Point1.dx(), color4); } } if (data.TriangleCount > 0) { DebugTriangle[] triangles = data.GetDebugTriangles(); for (int x = 0; x < data.TriangleCount; x++) { DebugTriangle triangle = triangles[x]; lineManager.AddTriangle(triangle.Point0.dx(), triangle.Point1.dx(), triangle.Point2.dx(), Int32ToColor(triangle.Color).dx()); } } game.LineManager3D.Render(lineManager, game.Camera); }
public void Render(IXNAGame _game) { if (!enabled) { return; } //game.GraphicsDevice.Clear(Color.LightBlue); game.GraphicsDevice.VertexDeclaration = vertexDecl; game.GraphicsDevice.RenderState.AlphaBlendEnable = false; _visualizationEffect.World = Matrix.Identity; _visualizationEffect.View = game.Camera.View; _visualizationEffect.Projection = game.Camera.Projection; DebugRenderable data = physXScene.GetDebugRenderable(); _visualizationEffect.Begin(); foreach (EffectPass pass in _visualizationEffect.CurrentTechnique.Passes) { pass.Begin(); if (data.PointCount > 0) { DebugPoint[] points = data.GetDebugPoints(); game.GraphicsDevice.DrawUserPrimitives <DebugPoint>(PrimitiveType.PointList, points, 0, points.Length); } if (data.LineCount > 0) { DebugLine[] lines = data.GetDebugLines(); VertexPositionColor[] vertices = new VertexPositionColor[data.LineCount * 2 * 2]; for (int x = 0; x < data.LineCount; x++) { DebugLine line = lines[x]; vertices[x * 4 + 0] = new VertexPositionColor(line.Point0, Int32ToColor(line.Color)); vertices[x * 4 + 1] = new VertexPositionColor(line.Point1, Int32ToColor(line.Color)); vertices[x * 4 + 2] = new VertexPositionColor(new Vector3(line.Point0.X, 0, line.Point0.Z), Color.Black); vertices[x * 4 + 3] = new VertexPositionColor(new Vector3(line.Point1.X, 0, line.Point1.Z), Color.Black); } game.GraphicsDevice.DrawUserPrimitives <VertexPositionColor>(PrimitiveType.LineList, vertices, 0, lines.Length * 2); } if (data.TriangleCount > 0) { DebugTriangle[] triangles = data.GetDebugTriangles(); VertexPositionColor[] vertices = new VertexPositionColor[data.TriangleCount * 3]; for (int x = 0; x < data.TriangleCount; x++) { DebugTriangle triangle = triangles[x]; vertices[x * 3 + 0] = new VertexPositionColor(triangle.Point0, Int32ToColor(triangle.Color)); vertices[x * 3 + 1] = new VertexPositionColor(triangle.Point1, Int32ToColor(triangle.Color)); vertices[x * 3 + 2] = new VertexPositionColor(triangle.Point2, Int32ToColor(triangle.Color)); } game.GraphicsDevice.DrawUserPrimitives <VertexPositionColor>(PrimitiveType.TriangleList, vertices, 0, triangles.Length); } pass.End(); } _visualizationEffect.End(); }