private static PerspectiveProjector CreateCanvasProjector() { var rotation = 95 * Math.PI / 180.0; var displaySize = new Size((int)(bounds.Width * renderScale), (int)(bounds.Height * renderScale)); var center = new DoubleVector3(0, 0, 0); var projector = new PerspectiveProjector( center + DoubleVector3.FromRadiusAngleAroundXAxis(1000, rotation), center, DoubleVector3.FromRadiusAngleAroundXAxis(1, rotation - Math.PI / 2), displaySize.Width, displaySize.Height); return(projector); }
private void DebugRenderLocalGeometryView(LocalGeometryView localGeometryView, params IntLineSegment2[] segs) { if (!kEnableDebugRender) { return; } Size bounds = new Size(1280, 720); var renderScale = 1.0f; PerspectiveProjector CreateCanvasProjector() { var rotation = 95 * Math.PI / 180.0; var displaySize = new Size((int)(bounds.Width * renderScale), (int)(bounds.Height * renderScale)); var center = new DoubleVector3(0, 0, 0); var projector = new PerspectiveProjector( center + DoubleVector3.FromRadiusAngleAroundXAxis(1000, rotation), center, DoubleVector3.FromRadiusAngleAroundXAxis(1, rotation - Math.PI / 2), displaySize.Width, displaySize.Height); return(projector); } DebugMultiCanvasHost host = DebugMultiCanvasHost.CreateAndShowCanvas(bounds, new Point(0, 0), CreateCanvasProjector()); var canvas = host.CreateAndAddCanvas(0); canvas.DrawPolyNode(localGeometryView.PunchedLand); foreach (var hole in localGeometryView.Job.DynamicHoles) { canvas.DrawPolygonContours(hole.Value.holeExcludedContours, StrokeStyle.OrangeHairLineSolid); canvas.DrawPolygonContours(hole.Value.holeIncludedContours, StrokeStyle.RedHairLineSolid); } foreach (var seg in segs) { canvas.DrawLine(seg, StrokeStyle.CyanHairLineSolid); } }
public static GameDebugger AttachToWithSoftwareRendering(Game game) { var rotation = 95 * Math.PI / 180.0; var scale = 1.0f; var displaySize = new Size((int)(1400 * scale), (int)(700 * scale)); var center = new DoubleVector3(0, 0, 0); // var center = new DoubleVector3(1500, 1500, 0); var projector = new PerspectiveProjector( center + DoubleVector3.FromRadiusAngleAroundXAxis(1000, rotation), // center + DoubleVector3.FromRadiusAngleAroundXAxis(200, rotation), center, DoubleVector3.FromRadiusAngleAroundXAxis(1, rotation - Math.PI / 2), displaySize.Width, displaySize.Height); // projector = null; // var debugMultiCanvasHost = new MonoGameCanvasHost(); var debugMultiCanvasHost = Debugging.DebugMultiCanvasHost.CreateAndShowCanvas( displaySize, new Point(100, 100), projector); return(AttachTo(game, debugMultiCanvasHost)); }