Beispiel #1
0
        public IntPtr Draw(float x, float y, Action <ISpriteDrawing> pre = null, Action <ISpriteDrawing> post = null)
        {
            _drawing.SetViewport(0, Width, 0, Height);
            _drawing.DestinationTexture = _spriteTexture;
            _drawing.Clear(_settings.EditorBackground);
            pre?.Invoke(_drawing);

            int posX;
            int posY;

            if (SpriteGroup.Count > 0)
            {
                posX = -SpriteGroup.Min(x => Math.Min(x.Left, x.Right));
                posY = -SpriteGroup.Min(x => Math.Min(x.Top, x.Bottom));
            }
            else
            {
                posX = 0;
                posY = 0;
            }


            _renderer.Draw(0, _frameIndex++, posX + x, posY + y);
            _drawing.Flush();

            post?.Invoke(_drawing);
            _drawing.DestinationTexture = null;

            return(TextureId);
        }