Exemplo n.º 1
0
        public override void Render(QuadRenderer renderer)
        {
            if (_stringBuilder.Length == 0)
            {
                return;
            }

            var originPos = Position + Origin;

            Vector2 originBuffer;

            var posBuffer = Position;

            var destBuffer = new Box2();

            var lineStart = posBuffer.X;

            //pos = origin pos
            //origin = desired pos - pos

            for (int i = 0; i < _stringBuilder.Length; i++)
            {
                var character = _stringBuilder[i];

                if (character == '\n')
                {
                    posBuffer.X  = lineStart;
                    posBuffer.Y -= _font.Spacing.Y;
                    continue;
                }
                if (character == ' ')
                {
                    posBuffer.X += _font.SpaceWidth;
                    continue;
                }

                var glyph = _font.GetGlyph(character);

                originBuffer = originPos - posBuffer;

                destBuffer.Min = Position;
                destBuffer.Max = destBuffer.Min + glyph.Size;

                renderer.SubmitQuad(destBuffer, glyph.Source, Color, originBuffer, Scale, Rotation, _font.Texture);

                posBuffer.X += glyph.Size.X + _font.Spacing.X;
            }
        }