Esempio n. 1
0
        private static void WriteCroppedQuad(TextureArea texture, Rectangle rect, 
            IDataStream<TransformedColouredTexturedVertex> dataStream, float horizontalCrop, float verticalCrop)
        {
            rect = rect.Translate(-0.5f, -0.5f).Scale(horizontalCrop, verticalCrop);

            var atlasRect = new Rectangle(texture.AtlasTopLeft, texture.AtlasBottomRight);
            atlasRect = atlasRect.Scale(horizontalCrop, verticalCrop);

            dataStream.WriteRange(
                new[]
                {
                    MakeVertex(rect.TopLeft, atlasRect.TopLeft),
                    MakeVertex(rect.BottomRight, atlasRect.BottomRight),
                    MakeVertex(rect.BottomLeft, atlasRect.BottomLeft),
                    MakeVertex(rect.TopLeft, atlasRect.TopLeft),
                    MakeVertex(rect.TopRight, atlasRect.TopRight),
                    MakeVertex(rect.BottomRight, atlasRect.BottomRight)
                });
        }
Esempio n. 2
0
        private static void WriteQuad(TextureArea texture, Rectangle rect, IDataStream<TransformedColouredTexturedVertex> dataStream, float alpha)
        {
            rect = rect.Translate(-0.5f, -0.5f);

            dataStream.WriteRange(
                new[]
                {
                    MakeVertex(rect.TopLeft, texture.AtlasTopLeft, alpha),
                    MakeVertex(rect.BottomRight, texture.AtlasBottomRight, alpha),
                    MakeVertex(rect.BottomLeft, texture.AtlasBottomLeft, alpha),
                    MakeVertex(rect.TopLeft, texture.AtlasTopLeft, alpha),
                    MakeVertex(rect.TopRight, texture.AtlasTopRight, alpha),
                    MakeVertex(rect.BottomRight, texture.AtlasBottomRight, alpha)
                });
        }
Esempio n. 3
0
        private void PerformUpdate(Vector2 size, TexturePatch textures,
            string overrideTexture = null, float alpha = 1.0f)
        {
            var rectTL =
                new Rectangle
                {
                    TopLeft = new Vector2(0, 0),
                    BottomRight = new Vector2(textures.TL.Width, textures.TL.Height)
                };

            var rectT =
                new Rectangle
                {
                    TopLeft = new Vector2(textures.TL.Width, 0),
                    BottomRight = new Vector2(size.X - rectTL.Width, textures.T.Height)
                };

            var rectTR =
                new Rectangle
                {
                    TopLeft = new Vector2(rectT.Width + rectTL.Width, 0),
                    BottomRight = new Vector2(rectT.Width + rectTL.Width + textures.TR.Width, textures.TR.Height)
                };

            var rectL =
                new Rectangle
                {
                    TopLeft = new Vector2(0, rectTL.Height),
                    BottomRight = new Vector2(textures.L.Width, size.Y - rectTL.Height)
                };

            var rectC =
                new Rectangle
                {
                    TopLeft = new Vector2(textures.TL.Width, textures.TL.Height),
                    BottomRight = new Vector2(size.X - rectTL.Width, size.Y - rectTL.Height)
                };

            var rectR =
                new Rectangle
                {
                    TopLeft = new Vector2(size.X - rectTL.Width, rectTR.Height),
                    BottomRight = new Vector2(size.X, size.Y - rectTL.Height)
                };

            var rectBL =
                new Rectangle
                {
                    TopLeft = new Vector2(0, size.Y - textures.BL.Height),
                    BottomRight = new Vector2(textures.BL.Width, size.Y)
                };

            var rectB =
                new Rectangle
                {
                    TopLeft = new Vector2(textures.BL.Width, size.Y - textures.B.Height),
                    BottomRight = new Vector2(size.X - textures.BR.Width, size.Y)
                };

            var rectBR =
                new Rectangle
                {
                    TopLeft = new Vector2(size.X - textures.BR.Width, size.Y - textures.BR.Height),
                    BottomRight = new Vector2(size.X, size.Y)
                };

            rectTL = rectTL.Translate(_offset);
            rectT = rectT.Translate(_offset);
            rectTR = rectTR.Translate(_offset);
            rectL = rectL.Translate(_offset);
            rectC = rectC.Translate(_offset);
            rectR = rectR.Translate(_offset);
            rectBL = rectBL.Translate(_offset);
            rectB = rectB.Translate(_offset);
            rectBR = rectBR.Translate(_offset);

            var dataStream = _textureRenderer.LockVertexBuffer();

            WriteQuad(textures.TL, rectTL, dataStream, alpha);
            WriteQuad(textures.T, rectT, dataStream, alpha);
            WriteQuad(textures.TR, rectTR, dataStream, alpha);
            WriteQuad(textures.L, rectL, dataStream, alpha);
            WriteQuad(textures.C, rectC, dataStream, alpha);
            WriteQuad(textures.R, rectR, dataStream, alpha);
            WriteQuad(textures.BL, rectBL, dataStream, alpha);
            WriteQuad(textures.B, rectB, dataStream, alpha);
            WriteQuad(textures.BR, rectBR, dataStream, alpha);

            var texture = textures.TL;

            if (!string.IsNullOrEmpty(overrideTexture))
            {
                texture = _graphicsContext.GetTexture(overrideTexture).TextureArea;
            }

            _textureRenderer.UnlockVertexBuffer();
            _textureRenderer.Render(PrimitiveType.TriangleList, 0, 18, texture, alpha, 1);
        }