Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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));
        }