Beispiel #1
0
        private void DrawTextSprite(SpriteBatch sb, TextSprite sprite, Vector2 position, Color color,
				float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects)
        {
            sprite.SetColor(color);
            sprite.Transform(position, scale, origin, Vector2.Zero, sprite.NaturalSize, rotation, effects,
                    ref sb.currentMatrix);

            sb.GraphicsDevice.DrawSprite(sprite);
        }
Beispiel #2
0
        private TextSprite CreateSprite(object key, string renderedStringBuilder,
				int frameNumber, bool cached, GraphicsDevice device)
        {
            // First try to find an existing sprite to reuse
            for(int i = 0; i < sprites.Count; i++)
            {
                // If it was last used before the immediately previous frame, assume it is free to use:
                if(sprites[i].cached == cached && sprites[i].foundOnFrame < frameNumber-1)
                {
                    TextSpriteInstance instance = sprites[i];
                    instance.key = key;
                    instance.renderedStringBuilder = renderedStringBuilder;
                    instance.foundOnFrame = frameNumber;
                    sprites[i] = instance;
                    return instance.value;
                }
            }

            // If no sprite to reuse was found...
            TextSprite sprite = new TextSprite(this, cached);
            sprites.Add(new TextSpriteInstance()
            {
                key = key,
                value = sprite,
                renderedStringBuilder = renderedStringBuilder,
                foundOnFrame = frameNumber,
                cached = cached
            });
            device.AddSprite(sprite);
            return sprite;
        }