public override void OnRender(Graphics.Graphics graphics, BaseViewport viewport) { BaseViewportCamera camera = viewport.Camera; Matrix4 vpMatrix4 = camera.GetViewMatrix() * camera.GetProjMatrix(); SolidRenderOperation render = new SolidRenderOperation { Viewport = viewport, Graphics = graphics }; // Draw all solids if (viewport.ViewportType == BaseViewport.ViewportTypes.PERSPECTIVE) { GL.Enable(EnableCap.DepthTest); } graphics.BeginDraw(vpMatrix4); foreach (MapObject mapObject in controller.SceneDocument) { if (mapObject.Selected) { continue; } mapObject.PerformOperation(render); } controller.Selection?.PerformOperation(render); graphics.EndDraw(); if (viewport.ViewportType == BaseViewport.ViewportTypes.PERSPECTIVE) { GL.Disable(EnableCap.DepthTest); } // Draw white wireframesolid on top of selection // only in Solid rendermode graphics.BeginDraw(vpMatrix4); if (viewport.RenderMode == BaseViewport.RenderModes.SOLID || viewport.RenderMode == BaseViewport.RenderModes.TEXTURED) { Color color = viewport.RenderMode == BaseViewport.RenderModes.TEXTURED ? Color.Yellow : Color.White; DoSolidAction(controller.Selection, (solid) => { graphics.DrawWireframeSolid(solid, color); }); } graphics.EndDraw(); // draw handles and blanket on top of everything else RenderAllVertexHandles(graphics, viewport); RenderBlanket(graphics, viewport); }
public override void OnRender(Graphics.Graphics graphics, BaseViewport viewport) { BaseViewportCamera camera = viewport.Camera; SolidRenderOperation render = new SolidRenderOperation { Viewport = viewport, Graphics = graphics }; // Draw all solid if (viewport.ViewportType == BaseViewport.ViewportTypes.PERSPECTIVE) { GL.Enable(EnableCap.DepthTest); } graphics.BeginDraw(camera.GetViewMatrix() * camera.GetProjMatrix()); foreach (MapObject mapObject in controller.SceneDocument) { if (mapObject.Selected) { continue; } mapObject.PerformOperation(render); } controller.Selection?.PerformOperation(render); graphics.EndDraw(); if (viewport.ViewportType == BaseViewport.ViewportTypes.PERSPECTIVE) { GL.Disable(EnableCap.DepthTest); } }
public override void OnRender(Graphics.Graphics graphics, BaseViewport viewport) { BaseViewportCamera camera = viewport.Camera; RubberBand rubberband = controller.RubberBand; SolidRenderOperation render = new SolidRenderOperation { Viewport = viewport, Graphics = graphics }; // Draw all solids if (viewport.ViewportType == BaseViewport.ViewportTypes.PERSPECTIVE) { GL.Enable(EnableCap.DepthTest); } graphics.BeginDraw(camera.GetViewMatrix() * camera.GetProjMatrix()); foreach (MapObject mapObject in controller.SceneDocument) { if (mapObject.Selected) { continue; } mapObject.PerformOperation(render); } controller.Selection?.PerformOperation(render); // only in orthographic viewport if (viewport.ViewportType != BaseViewport.ViewportTypes.PERSPECTIVE) { // draw rubberband if (rubberband.Bounds.HasVolume2D) { graphics.DrawWireframeAabb(rubberband.Bounds, Graphics.Graphics.LineType.LineDashed, rubberband.Color, rubberband.Transformation, viewport.Zoom); } else { // draw "rubberband" for the selection graphics.DrawWireframeAabb(controller.Selection?.Bounds, Graphics.Graphics.LineType.LineDashed, viewport.RenderMode == BaseViewport.RenderModes.SOLID ? Color.Yellow : Color.Red, Matrix4.Identity, viewport.Zoom); } // draw grabhandles for selection if (controller.RubberBand.ShowGrabhandles) { SolidGrabHandles handles = controller.RubberBand.Handles; Matrix4 viewportMatrix = viewport.Camera.GetWorldMatrix().ClearTranslation(); handles.CreateHandles(controller.Selection, viewportMatrix, viewport.Zoom); handles.Render(graphics); } } graphics.EndDraw(); if (viewport.ViewportType == BaseViewport.ViewportTypes.PERSPECTIVE) { GL.Disable(EnableCap.DepthTest); } }