public async Task Run() { var rf = Graphics.Device.ResourceFactory; var ninject = new StandardKernel(new FluentNinjectModule(_ => _ .BindExisting(Graphics) .BindExisting(Assets) .BindExisting(Spatial) )); var layers = new IViewLayer[] { // order is bottom to top! ninject.Get <SpatialViewLayer>(), ninject.Get <DebugViewLayer>() }.ToImmutableArray(); using var commands = new Commands(Graphics); using var intermediate = new IntermediateFramebuffer(Graphics, Assets, Blend.Override, DepthTest.Off, Graphics.Device.SwapchainFramebuffer.OutputDescription); while (!Window.ShouldQuit) { if (Graphics.FrameReady) { continue; // main thread hadn't sent last frame to screen yet } try { intermediate.Validate(); // ReSharper disable AccessToDisposedClosure commands.Submit(x => { x.SetFramebuffer(intermediate); x.ClearColorTarget(0, RgbaFloat.White); x.ClearDepthStencil(1); }); foreach (var layer in layers) { await layer.Draw(intermediate); } await intermediate.Draw(Graphics.Device.SwapchainFramebuffer); Graphics.FrameReady = true; } catch (Exception ex) { Log.Error(ex, "Error rendering frame."); } } foreach (var viewLayer in layers) { viewLayer.Dispose(); } }
private void _RegisterViewLayerByView(IViewLayer layer) { var view = layer.GetView(); if (!_viewLayersByView.ContainsKey(view)) { _viewLayersByView.Add(view, new List <IViewLayer>()); } _viewLayersByView[view].Add(layer); }
private void InitViewProperties(IViewport viewport, IViewLayer layer) { var view = viewport.View; Debug.Assert(view != null, nameof(view) + " != null"); Scene = layer.VisibleScene; ViewportSize = new IntSize2(viewport.Width, viewport.Height); AspectRatio = viewport.AspectRatio; var camera = layer.Camera; var viewMat = camera.GetViewMat(); var projMat = camera.GetProjectionMat(AspectRatio); ViewProjection = viewMat * projMat; }
public ModuleConstructor(IViewLayer vl, params PointF[] addPoints) { InfoLine = new ReactiveShape<Line>(new Line { Render = new LineRender { Pen = new Pen(Color.Gray, 0.1f), IsVisible = true } }); AreaPic = new ReactiveShape<Circle>(new Circle { Radius = 10, Render = { Pen = new Pen(Color.DimGray, 0.5f), Brush = Brushes.AliceBlue, IsFulled = true } }); FillerConstraint = new Dictionary<string, Func<Polygon, bool>> { {"TriangleOrMore", polygon => polygon.Count > 2}, // треугольник или больше {"NotSelfIntersection", polygon => !polygon.IsSelfIntersection},// без самопересечений {"Clockwise", polygon => polygon.OrientedArea < 0}, // ориентирован по часовой }; ViewLayer = vl; ViewLayer.AddShape(InfoLine); ViewLayer.AddShape(Filler = CreatePolygon(addPoints)); Filler.Shape.PointMoving += filler_PointMoving; Filler.Shape.PointAdding += Filler_PointAdding; Filler.Shape.PointRemoving += Filler_PointRemoving; Filler.Shape.PointAdded += Filler_PointAdded; Filler.Shape.PointRemoved += Filler_PointRemoved; Filler.MouseSenseEnter += Filler_MouseSenseEnter; Filler.MouseSenseLeave += Filler_MouseSenseLeave; Filler.MouseSense += Filler_MouseSense; Filler.IsSenseMouse = true; Filler.ExternalDistanceSense = 10; Filler.InternalDistanceSense = 10; if (addPoints != null && addPoints.Length > 0) { Markers.AddRange(addPoints.Select(CreateMarker)); } ViewLayer.AddShape(Caption = CreateCaption()); FitchInfoPics(); ViewLayer.AddShape(AreaPic); AreaPic.MouseEnter += AreaPic_MouseEnter; AreaPic.MouseLeave += AreaPic_MouseLeave; CreateAddingPointMaker(); Filler.CommandHandlers["EndDrag"].FinishHnd += (shape, code, args) => AdjustFiller(); AdjustFiller(); }
public void Init() { _aHomeViewLayer = Substitute.For <IViewLayer>(); _aHomeViewLayer.GetView().Returns(View.Home); _anotherHomeViewLayer = Substitute.For <IViewLayer>(); _anotherHomeViewLayer.GetView().Returns(View.Home); _aLobbyViewLayer = Substitute.For <IViewLayer>(); _aLobbyViewLayer.GetView().Returns(View.Lobby); var allViewLayers = new List <IViewLayer> { _aHomeViewLayer, _anotherHomeViewLayer, _aLobbyViewLayer }; _viewManager = new ViewManager(allViewLayers, Substitute.For <IAnalyticsSubmitter>()); }
public static IHandler Layer(this IHandler handler, IViewLayer layer) { return(new RegionOptions { Layer = new LayerOptions { Selector = layers => { if (!layers.Contains(layer)) { throw new ArgumentException("Layer not found"); } return layer; } } }.Decorate(handler)); }
public RayCastInfo(IViewport viewport, IViewLayer layer, Ray3 globalRay) { InitViewProperties(viewport, layer); GlobalRay = globalRay; }
public RayCastInfo(IViewport viewport, IViewLayer layer, IntVector2 pointerPixelPos) { InitViewProperties(viewport, layer); GlobalRay = GenGlobalRayFromMousePos(layer.Camera, ViewportSize, AspectRatio, pointerPixelPos); }
public RollChoice(IViewLayer vl) { }
public ModuleContainer(IViewLayer vl, params PointF[] addPoints) : base(vl, addPoints) { }
/// <summary> /// ѕолучить слой на уровень ниже, чем текущий /// </summary> /// <returns></returns> public IViewLayer GetUnderLayer(IViewLayer vl) { return this[vl.Index - 1]; }
/// <summary> /// ѕолучить слой на уровень выше, чем текущий /// </summary> /// <returns></returns> public IViewLayer GetAboveLayer(IViewLayer vl) { return this[vl.Index + 1]; }
public MvvmPattern(ILogicLayer logicLayer, IViewModelLayer viewModelLayer, IViewLayer viewLayer) { _logicLayer = logicLayer; _viewModelLayer = viewModelLayer; _viewLayer = viewLayer; }
public virtual IViewLayer Show(IView view) { return(ViewLayer = view.Display(Inner)); }