Пример #1
0
        public override void Render(AptRenderer renderer, ItemTransform pTransform, DrawingContext2D dc)
        {
            if (!Visible)
            {
                return;
            }

            var cTransform = pTransform * Transform;

            switch (Character)
            {
            case Shape s:
                var geometry = Context.GetGeometry(s.Geometry, Character);

                renderer.RenderGeometry(dc, Context, geometry, cTransform, Texture);
                break;

            case Text t:
                if (t.Value.Length > 0)
                {
                    var val = ScriptObject.ResolveValue(t.Value, ScriptObject);
                    if (val.Type != ValueType.Undefined)
                    {
                        t.Content = val.ToString();
                    }
                }

                //localize our content
                t.Content = t.Content.Replace("$", "APT:");
                t.Content = t.Content.Translate();

                renderer.RenderText(dc, Context, t, cTransform);
                break;
            }
        }
Пример #2
0
        public RenderPipeline(Game game)
        {
            _renderList = new RenderList();

            var graphicsDevice = game.GraphicsDevice;

            _globalShaderResources    = game.ContentManager.ShaderResources.Global;
            _globalShaderResourceData = AddDisposable(new GlobalShaderResourceData(game.GraphicsDevice, _globalShaderResources));

            _renderItemConstantsBufferVS = AddDisposable(new ConstantBuffer <MeshShaderResources.RenderItemConstantsVS>(graphicsDevice, "RenderItemConstantsVS"));
            _renderItemConstantsBufferPS = AddDisposable(new ConstantBuffer <MeshShaderResources.RenderItemConstantsPS>(graphicsDevice, "RenderItemConstantsPS"));

            _renderItemConstantsResourceSet = AddDisposable(graphicsDevice.ResourceFactory.CreateResourceSet(
                                                                new ResourceSetDescription(
                                                                    game.ContentManager.ShaderResources.Mesh.RenderItemConstantsResourceLayout,
                                                                    _renderItemConstantsBufferVS.Buffer,
                                                                    _renderItemConstantsBufferPS.Buffer)));

            _commandList = AddDisposable(graphicsDevice.ResourceFactory.CreateCommandList());

            _drawingContext = AddDisposable(new DrawingContext2D(
                                                game.ContentManager,
                                                BlendStateDescription.SingleAlphaBlend,
                                                GameOutputDescription));

            _shadowMapRenderer = AddDisposable(new ShadowMapRenderer(game.GraphicsDevice, game.ContentManager.ShaderResources.Global));

            _textureCopier = AddDisposable(new TextureCopier(
                                               game,
                                               game.Panel.OutputDescription));
        }
Пример #3
0
        public RenderPipeline(Game game)
        {
            _renderList = new RenderList();

            var graphicsDevice = game.GraphicsDevice;

            _loadContext = game.GraphicsLoadContext;

            _globalShaderResources    = game.GraphicsLoadContext.ShaderResources.Global;
            _globalShaderResourceData = AddDisposable(new GlobalShaderResourceData(game.GraphicsDevice, _globalShaderResources, game.GraphicsLoadContext.StandardGraphicsResources));

            _commandList = AddDisposable(graphicsDevice.ResourceFactory.CreateCommandList());

            _drawingContext = AddDisposable(new DrawingContext2D(
                                                game.ContentManager,
                                                game.GraphicsLoadContext,
                                                BlendStateDescription.SingleAlphaBlend,
                                                GameOutputDescription));

            _shadowMapRenderer = AddDisposable(new ShadowMapRenderer(game.GraphicsDevice));
            _waterMapRenderer  = AddDisposable(new WaterMapRenderer(game.AssetStore, _loadContext, game.GraphicsDevice, game.GraphicsLoadContext.ShaderResources.Global));

            _textureCopier = AddDisposable(new TextureCopier(
                                               game,
                                               game.Panel.OutputDescription));
        }
Пример #4
0
        internal void SetRenderTarget(RenderTarget renderTarget)
        {
            if (renderTarget != null)
            {
                _commandList.Begin();

                _commandList.SetFramebuffer(renderTarget.Framebuffer);
                _commandList.ClearColorTarget(0, new RgbaFloat(0, 0, 0, 0));

                _clipMaskDrawingContext.Begin(
                    _commandList,
                    _graphicsLoadContext.StandardGraphicsResources.LinearClampSampler,
                    new SizeF(renderTarget.ColorTarget.Width, renderTarget.ColorTarget.Height));

                _activeDrawingContext = _clipMaskDrawingContext;
            }
            else
            {
                _clipMaskDrawingContext.End();

                _commandList.End();

                _contentManager.GraphicsDevice.SubmitCommands(_commandList);

                _activeDrawingContext = _drawingContext;
            }
        }
Пример #5
0
        public void DrawDebugOverlay(Scene3D scene, DrawingContext2D drawingContext)
        {
            if (scene?.Shadows.VisualizeShadowFrustums is not true)
            {
                return;
            }

            for (var splitIndex = 0; splitIndex < _shadowData.NumSplits; splitIndex++)
            {
                _lightFrustum.Matrix = _shadowData.ShadowCameraViewProjections[splitIndex];

                var corners = _lightFrustum.Corners;
                var color   = CascadeColors[splitIndex];

                void DrawLine(int start, int end)
                {
                    DebugDrawingUtils.DrawLine(drawingContext, scene.Camera, corners[start], corners[end], color);
                }

                DrawLine(0, 1);
                DrawLine(1, 2);
                DrawLine(2, 3);
                DrawLine(3, 0);

                DrawLine(4, 5);
                DrawLine(5, 6);
                DrawLine(6, 7);
                DrawLine(7, 4);

                DrawLine(0, 4);
                DrawLine(1, 5);
                DrawLine(2, 6);
                DrawLine(3, 7);
            }
        }
Пример #6
0
        public void Render(DrawingContext2D drawingContext)
        {
            if (!_visible)
            {
                return;
            }

            var radialBorder = _game.GetMappedImage("RadialBorder");

            var numVisibleButtons = _buttons.Where(x => x.IsVisible).Count();
            var radius            = (-1 + MathF.Sqrt(numVisibleButtons + 0.75f)) * (radialBorder.Coords.Width * 0.9f);
            var deltaAngle        = MathUtility.TwoPi / numVisibleButtons;

            var i = 0;

            foreach (var button in _buttons)
            {
                if (!button.IsVisible)
                {
                    continue;
                }

                var posX = _center.X + MathF.Sin(i * deltaAngle) * radius;
                var posY = _center.Y + -MathF.Cos(i * deltaAngle) * radius;

                button.Render(drawingContext, new Vector2(posX, posY));
                i++;
            }
        }
Пример #7
0
        internal void DebugDraw(DrawingContext2D drawingContext, Camera camera, GameObject parent)
        {
            var collideInfo = GeometryCollisionDetectionUtility.CreateCollideInfo(parent);

            foreach (var shape in Shapes)
            {
                var shapeCollideInfo = GeometryCollisionDetectionUtility.CreateShapeInfo(shape, collideInfo);

                switch (shape.Type)
                {
                case GeometryType.Sphere:
                    drawingContext.DrawSphere(camera, shapeCollideInfo.CreateSphere());
                    break;

                case GeometryType.Cylinder:
                    drawingContext.DrawCylinder(camera, shapeCollideInfo.CreateCylinder());
                    break;

                case GeometryType.Box:
                    drawingContext.DrawBox(camera, shapeCollideInfo.CreateBox());
                    break;

                default:
                    throw new InvalidOperationException();
                }
            }
        }
Пример #8
0
        public MainWindow(WindowSettingsOption windowSettings) :
            base(windowSettings.Width, windowSettings.Height, GraphicsMode.Default, string.Empty, GameWindowFlags.Default, DisplayDevice.GetDisplay(DisplayIndex.Default))
        {
            var clippingArea = GetClippingArea();

            _clippingAreaWidth  = Math.Abs(clippingArea.Right - clippingArea.Left);
            _clippingAreaHeight = Math.Abs(clippingArea.Bottom - clippingArea.Top);
            _drawingContext2D   = new DrawingContext2D(clippingArea);

            var buttonPlaceholderTexture = new Texture2D(Images.placeholder_100x40);

            buttonPlaceholderTexture.Initialize();
            //var rectangle = new Rectangle3D(Vector3.Zero, new Vector3(0, 0, 1), new Vector3(0, -1, 0), 0.1f, 0.04f);
            _rectangle = new Rectangle2D(new Vector2(-_clippingAreaWidth / 2, -_clippingAreaHeight / 2), 0.0f, 60.0f, 20.0f);
            _rectangle.TextureManager = new RectangleTextureManager(buttonPlaceholderTexture);

            var point = new Point2D(new Vector2(0.0f, 0.0f), 5.0f, Color.Aqua);

            opacity = 0.0f;

            switch (windowSettings.BorderType)
            {
            case WindowFeatures.BorderType.Normal:
                WindowBorder = WindowBorder.Resizable;
                break;

            case WindowFeatures.BorderType.Borderless:
                WindowBorder = WindowBorder.Hidden;
                break;

            case WindowFeatures.BorderType.Fullscreen:
                WindowState = WindowState.Fullscreen;
                break;
            }
        }
Пример #9
0
        public void Render(ItemTransform pTransform, DrawingContext2D dc)
        {
            if (!Visible)
            {
                return;
            }

            switch (_character)
            {
            case Shape s:
                var geometry = _context.GetGeometry(s.Geometry, _character);
                AptRenderer.RenderGeometry(dc, _context, geometry, pTransform);
                break;

            case Text t:
                if (t.Value.Length > 0)
                {
                    var val = ScriptObject.ResolveValue(t.Value, ScriptObject);
                    if (val.Type != ValueType.Undefined)
                    {
                        t.Content = val.ToString();
                    }
                }

                //localize our content
                t.Content = t.Content.Replace("$", "APT:");
                t.Content = _context.ContentManager.TranslationManager.Lookup(t.Content);

                AptRenderer.RenderText(dc, _context, t, pTransform);
                break;
            }
        }
Пример #10
0
        protected override void DrawOverride(DrawingContext2D drawingContext)
        {
            DrawText(drawingContext, TextAlignment.Center);

            if (IsMouseOver && HoverOverlayImage != null)
            {
                HoverOverlayImage.Draw(drawingContext, ClientRectangle);
            }
        }
Пример #11
0
        protected override void DrawOverride(DrawingContext2D drawingContext)
        {
            Rectangle textArea = new Rectangle(ClientRectangle.X + 10,
                                               ClientRectangle.Y,
                                               ClientRectangle.Width,
                                               ClientRectangle.Height);

            DrawText(drawingContext, TextAlignment.Leading, textArea);
        }
Пример #12
0
        public override void Render(AptRenderer renderer, ItemTransform pTransform, DrawingContext2D dc)
        {
            var button = Character as Button;

            _curTransform = pTransform * Transform;
            _curTransform.GeometryTranslation  *= renderer.Window.GetScaling();
            _curTransform.GeometryRotation.M11 *= renderer.Window.GetScaling().X;
            _curTransform.GeometryRotation.M22 *= renderer.Window.GetScaling().Y;
        }
Пример #13
0
        public CameraFadeOverlay(Game game)
        {
            _game = game;

            _drawingContext = AddDisposable(new DrawingContext2D(
                                                game.ContentManager,
                                                game.GraphicsLoadContext,
                                                BlendStateDescription.SingleAdditiveBlend,
                                                RenderPipeline.GameOutputDescription));
        }
Пример #14
0
 protected override void DrawBackgroundImage(DrawingContext2D drawingContext)
 {
     if (IsMouseDown && PushedBackgroundImage != null)
     {
         PushedBackgroundImage.Draw(drawingContext, ClientRectangle);
     }
     else
     {
         base.DrawBackgroundImage(drawingContext);
     }
 }
Пример #15
0
        protected override void DrawOverride(DrawingContext2D drawingContext)
        {
            var checkboxRect = new Rectangle(Point2D.Zero, CheckBoxSize);

            GetImage().Draw(drawingContext, checkboxRect);

            var textLeft = checkboxRect.Right + 3;
            var textRect = new Rectangle(textLeft, 0, ClientSize.Width - textLeft, CheckBoxSize.Height);

            DrawText(drawingContext, TextAlignment.Leading, textRect);
        }
        // This is also used by LanMapSelectMenu.
        public static void W3DDrawMapPreview(Control control, DrawingContext2D drawingContext)
        {
            if (!control.Data.TryGetValue("MapPreview", out var mapPreviewTexture))
            {
                return;
            }

            drawingContext.DrawImage(
                (Texture)mapPreviewTexture,
                null,
                control.ClientRectangle.ToRectangleF());
        }
Пример #17
0
        public void RenderText(DrawingContext2D drawingContext, AptContext context,
                               Text text, ItemTransform transform)
        {
            var font = _contentManager.FontManager.GetOrCreateFont("Arial", text.FontHeight, FontWeight.Normal);

            CalculateTransform(ref transform, context);

            drawingContext.DrawText(
                text.Content,
                font,
                TextAlignment.Center,
                text.Color.ToColorRgbaF() * transform.ColorTransform,
                RectangleF.Transform(text.Bounds, transform.GeometryRotation));
        }
Пример #18
0
        public void Render(ItemTransform pTransform, DrawingContext2D dc)
        {
            if (!Visible)
            {
                return;
            }

            //calculate the transform for this element
            var cTransform = pTransform * Transform;

            //render all subitems
            foreach (var item in _content.Items.Values)
            {
                item.Render(cTransform, dc);
            }
        }
Пример #19
0
        public static void RenderText(DrawingContext2D drawingContext, AptContext context,
                                      Text text, ItemTransform transform)
        {
            var content = context.ContentManager;
            var font    = context.ContentManager.GetOrCreateFont("Arial", text.FontHeight, FontWeight.Normal);
            var matrix  = transform.GeometryRotation;

            matrix.Translation = transform.GeometryTranslation;

            drawingContext.DrawText(
                text.Content,
                font,
                TextAlignment.Center,
                text.Color.ToColorRgbaF() * transform.ColorTransform,
                RectangleF.Transform(text.Bounds, matrix));
        }
Пример #20
0
        public override void Render(AptRenderer renderer, ItemTransform pTransform, DrawingContext2D dc)
        {
            if (!Visible)
            {
                return;
            }

            //calculate the transform for this element
            var cTransform = pTransform * Transform;

            //render all subItems
            foreach (var item in Content.Items.Values)
            {
                item.Render(renderer, cTransform, dc);
            }
        }
Пример #21
0
            public void Render(DrawingContext2D drawingContext)
            {
                var shapeBoundingBox = _shape.BoundingBox;

                var translation = new Vector2(-shapeBoundingBox.X, -shapeBoundingBox.Y);

                var itemTransform = new ItemTransform(
                    ColorRgbaF.White,
                    Matrix3x2.CreateScale(_scale, _scale),
                    translation);

                AptRenderer.RenderGeometry(
                    drawingContext,
                    _context,
                    _shape,
                    itemTransform);
            }
Пример #22
0
            public void Render(DrawingContext2D drawingContext)
            {
                var shapeBoundingBox = _shape.BoundingBox;

                var translation = new Vector2(-shapeBoundingBox.X, -shapeBoundingBox.Y);

                var itemTransform = new ItemTransform(
                    ColorRgbaF.White,
                    Matrix3x2.CreateScale(_scale, _scale),
                    translation);

                _renderingContext.SetDrawingContext(drawingContext);
                _renderingContext.PushTransform(itemTransform);

                _renderingContext.RenderGeometry(_shape, null);

                _renderingContext.PopTransform();
            }
Пример #23
0
        protected override void DrawOverride(DrawingContext2D drawingContext)
        {
            var valueWidth = (Value - MinimumValue) / (float)(MaximumValue - MinimumValue) * ClientSize.Width;

            var x = 0;

            while (x < ClientRectangle.Right)
            {
                var image = x < valueWidth
                    ? HighlightedBoxImage
                    : UnhighlightedBoxImage;

                image.Draw(
                    drawingContext,
                    new Rectangle(new Point2D(x, 0), BoxSize));

                x += BoxSize.Width + 1;
            }
        }
Пример #24
0
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);

            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
            GL.ClearColor(Color.Black);

            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.AlphaTest);
            GL.Enable(EnableCap.Blend);
            GL.Enable(EnableCap.SampleAlphaToCoverage);
            GL.AlphaFunc(AlphaFunction.Greater, 0.1f);
            GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);

            var clippingArea = new ClippingArea
            {
                Left   = -1.0f,
                Right  = 1.0f,
                Bottom = -1.0f,
                Top    = 1.0f,
                Near   = 1.0f,
                Far    = -1.0f
            };

            var buttonPlaceholderTexture = new Texture2D(Images.placeholder_100x40);

            buttonPlaceholderTexture.InitTexture();
            var rectangle = new Graphics.Drawables.Drawables3D.Rectangle(Vector3.Zero, new Vector3(0, 0, 1), new Vector3(0, -1, 0), 0.1f, 0.04f);

            rectangle.TextureManager = new RectangleTextureManager(buttonPlaceholderTexture);

            var point = new Graphics.Drawables.Drawables2D.Point(new Vector2(0.0f, 0.0f), 5.0f, Color.Aqua);
            var dc2d  = new DrawingContext2D(clippingArea);

            dc2d.Drawables.Add(point);
            dc2d.Drawables.Add(rectangle);

            dc2d.Render();

            SwapBuffers();
        }
Пример #25
0
        public RenderPipeline(Game game)
        {
            _renderList = new RenderList();

            var graphicsDevice = game.GraphicsDevice;

            _globalConstantBufferShared    = AddDisposable(new ConstantBuffer <GlobalConstantsShared>(graphicsDevice, "GlobalConstantsShared"));
            _globalConstantBufferVS        = AddDisposable(new ConstantBuffer <GlobalConstantsVS>(graphicsDevice, "GlobalConstantsVS"));
            _renderItemConstantsBufferVS   = AddDisposable(new ConstantBuffer <RenderItemConstantsVS>(graphicsDevice, "RenderItemConstantsVS"));
            _renderItemConstantsBufferPS   = AddDisposable(new ConstantBuffer <RenderItemConstantsPS>(graphicsDevice, "RenderItemConstantsPS"));
            _globalConstantBufferPS        = AddDisposable(new ConstantBuffer <GlobalConstantsPS>(graphicsDevice, "GlobalConstantsPS"));
            _globalLightingVSTerrainBuffer = AddDisposable(new ConstantBuffer <LightingConstantsVS>(graphicsDevice, "GlobalLightingConstantsVS (terrain)"));
            _globalLightingPSTerrainBuffer = AddDisposable(new ConstantBuffer <LightingConstantsPS>(graphicsDevice, "GlobalLightingConstantsPS (terrain)"));
            _globalLightingVSObjectBuffer  = AddDisposable(new ConstantBuffer <LightingConstantsVS>(graphicsDevice, "GlobalLightingConstantsVS (objects)"));
            _globalLightingPSObjectBuffer  = AddDisposable(new ConstantBuffer <LightingConstantsPS>(graphicsDevice, "GlobalLightingConstantsPS (objects)"));
            _shadowConstantsPSBuffer       = AddDisposable(new ConstantBuffer <ShadowConstantsPS>(graphicsDevice, "ShadowConstantsPS"));

            _commandList = AddDisposable(graphicsDevice.ResourceFactory.CreateCommandList());

            _drawingContext = AddDisposable(new DrawingContext2D(
                                                game.ContentManager,
                                                BlendStateDescription.SingleAlphaBlend,
                                                GameOutputDescription));

            _shadowSampler = AddDisposable(graphicsDevice.ResourceFactory.CreateSampler(
                                               new SamplerDescription(
                                                   SamplerAddressMode.Clamp,
                                                   SamplerAddressMode.Clamp,
                                                   SamplerAddressMode.Clamp,
                                                   SamplerFilter.MinLinear_MagLinear_MipLinear,
                                                   ComparisonKind.LessEqual,
                                                   0,
                                                   0,
                                                   0,
                                                   0,
                                                   SamplerBorderColor.OpaqueBlack)));

            _shadowMapRenderer = AddDisposable(new ShadowMapRenderer());

            _intermediateSpriteBatch = AddDisposable(new SpriteBatch(game.ContentManager, BlendStateDescription.SingleDisabled, game.GraphicsDevice.MainSwapchain.Framebuffer.OutputDescription));
        }
Пример #26
0
        public RenderPipeline(Game game)
        {
            _renderList = new RenderList();

            var graphicsDevice = game.GraphicsDevice;

            _globalConstantBufferShared    = AddDisposable(new ConstantBuffer <GlobalConstantsShared>(graphicsDevice, "GlobalConstantsShared"));
            _globalConstantBufferVS        = AddDisposable(new ConstantBuffer <GlobalConstantsVS>(graphicsDevice, "GlobalConstantsVS"));
            _renderItemConstantsBufferVS   = AddDisposable(new ConstantBuffer <RenderItemConstantsVS>(graphicsDevice, "RenderItemConstantsVS"));
            _globalConstantBufferPS        = AddDisposable(new ConstantBuffer <GlobalConstantsPS>(graphicsDevice, "GlobalConstantsPS"));
            _globalLightingVSTerrainBuffer = AddDisposable(new ConstantBuffer <LightingConstantsVS>(graphicsDevice, "Global_LightingConstantsVS (terrain)"));
            _globalLightingPSTerrainBuffer = AddDisposable(new ConstantBuffer <LightingConstantsPS>(graphicsDevice, "Global_LightingConstantsPS (terrain)"));
            _globalLightingVSObjectBuffer  = AddDisposable(new ConstantBuffer <LightingConstantsVS>(graphicsDevice, "Global_LightingConstantsVS (objects)"));
            _globalLightingPSObjectBuffer  = AddDisposable(new ConstantBuffer <LightingConstantsPS>(graphicsDevice, "Global_LightingConstantsPS (objects)"));

            _commandList = AddDisposable(graphicsDevice.ResourceFactory.CreateCommandList());

            _drawingContext = AddDisposable(new DrawingContext2D(
                                                game.ContentManager,
                                                BlendStateDescription.SingleAlphaBlend,
                                                GameOutputDescription));
        }
Пример #27
0
        public static void W3DCreditsMenuDraw(Control control, DrawingContext2D drawingContext)
        {
            var data = (CreditsMenuData)control.Tag;

            foreach (var item in data.Items)
            {
                var rect = item.Rect;
                rect.Y += data.CurrentY;

                if (!control.ClientRectangle.ToRectangleF().IntersectsWith(rect))
                {
                    continue;
                }

                drawingContext.DrawText(
                    item.Text,
                    item.Font,
                    TextAlignment.Center,
                    item.Color.ToColorRgbaF(),
                    rect);
            }
        }
Пример #28
0
        public override void Render(AptRenderer renderer, ItemTransform pTransform, DrawingContext2D dc)
        {
            var button = Character as Button;

            _curTransform = pTransform * Transform;
            _curTransform.GeometryTranslation  *= renderer.Window.GetScaling();
            _curTransform.GeometryRotation.M11 *= renderer.Window.GetScaling().X;
            _curTransform.GeometryRotation.M22 *= renderer.Window.GetScaling().Y;

            var transform = _curTransform.GeometryRotation;

            transform.Translation = _curTransform.GeometryTranslation;
            ApplyCurrentRecord(ref transform);

            var verts = button.Vertices;

            foreach (var tri in button.Triangles)
            {
                var v1 = Vector2.Transform(verts[tri.IDX0], transform);
                var v2 = Vector2.Transform(verts[tri.IDX1], transform);
                var v3 = Vector2.Transform(verts[tri.IDX2], transform);

                var color = ColorRgbaF.White;

                if (button.IsMenu)
                {
                    color = new ColorRgbaF(1.0f, 0.0f, 0.0f, 1.0f);
                }

                if (_isHovered)
                {
                    color = new ColorRgbaF(0.0f, 1.0f, 1.0f, 1.0f);
                }

                dc.DrawLine(new Line2D(v1, v2), 1.0f, color);
                dc.DrawLine(new Line2D(v2, v3), 1.0f, color);
                dc.DrawLine(new Line2D(v3, v1), 1.0f, color);
            }
        }
Пример #29
0
        internal AptRenderingContext(
            AptWindow window,
            ContentManager contentManager,
            GraphicsLoadContext graphicsLoadContext,
            AptContext aptContext)
        {
            _contentManager      = contentManager;
            _aptContext          = aptContext;
            _graphicsLoadContext = graphicsLoadContext;

            Window = window;

            _transformStack = new Stack <ItemTransform>();

            _clipMaskDrawingContext = AddDisposable(
                new DrawingContext2D(
                    contentManager,
                    graphicsLoadContext,
                    BlendStateDescription.SingleAlphaBlend,
                    RenderTarget.OutputDescription));

            _commandList = AddDisposable(contentManager.GraphicsDevice.ResourceFactory.CreateCommandList());
        }
Пример #30
0
        public void Render(DrawingContext2D drawingContext, Vector2 center)
        {
            _center = center;
            var rect = new RectangleF(center.X - _width / 2, center.Y - _width / 2, _width, _width);

            drawingContext.DrawMappedImage(_background, RectangleF.Scale(rect, 0.9f), grayscaled: !_enabled);

            if (_count > 0)
            {
                //drawingContext.SetAlphaMask(_alphaMask);
                drawingContext.FillRectangleRadial360(
                    new Rectangle(rect),
                    new ColorRgbaF(1.0f, 1.0f, 1.0f, 0.6f),                     //_scheme.BuildUpClockColor.ToColorRgbaF(),
                    _progress);

                if (_count > 1)
                {
                    var textRect = new Rectangle(RectangleF.Transform(rect, Matrix3x2.CreateTranslation(new Vector2(0, rect.Width / 3))));
                    drawingContext.DrawText(_count.ToString(), _font, TextAlignment.Center, _fontColor, textRect);
                }
                //drawingContext.SetAlphaMask(null);
            }

            if (_isHovered && _enabled)
            {
                drawingContext.DrawMappedImage(_hover, rect);
            }
            else if (_isPushed && _enabled)
            {
                drawingContext.DrawMappedImage(_down, rect);
            }
            else
            {
                drawingContext.DrawMappedImage(_border, rect);
            }
        }