public void Draw(Texture2D texture, Rectangle destination, Rectangle source, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(texture, destination, source, Color.White, flipMode); }
public void Draw(Texture2D texture, Rectangle destination, Rectangle source, Color color, float rotation, Vector2 origin, SpriteFlipMode flipMode = SpriteFlipMode.None) { float x = destination.X; float y = destination.Y; float dx = -origin.X; float dy = -origin.Y; float w = destination.Width; float h = destination.Height; float sin = (float)Math.Sin(rotation); float cos = (float)Math.Cos(rotation); Vector2 topLeft = new Vector2(x + dx * cos - dy * sin, y + dx * sin + dy * cos); Vector2 topRight = new Vector2(x + (dx + w) * cos - dy * sin, y + (dx + w) * sin + dy * cos); Vector2 bottomLeft = new Vector2(x + dx * cos - (dy + h) * sin, y + dx * sin + (dy + h) * cos); Vector2 bottomRight = new Vector2(x + (dx + w) * cos - (dy + h) * sin, y + (dx + w) * sin + (dy + h) * cos); Draw(texture, topLeft, topRight, bottomLeft, bottomRight, source, color, flipMode); }
public void Draw(TextureRegion textureRegion, Rectangle destination, Color color, float rotation, Vector2 origin, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(textureRegion.Texture, destination, textureRegion.Region, color, rotation, origin, flipMode); }
public void Draw(Texture2D texture, Rectangle destination, Rectangle source, Color color, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(texture, new Vector2(destination.X, destination.Y), new Vector2(destination.X + destination.Width, destination.Y + destination.Height), source, color, flipMode); }
public void Draw(Texture2D texture, Vector2 position, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(texture, new Rectangle((int)position.X, (int)position.Y, texture._width, texture._height), new Rectangle(0, 0, texture._width, texture._height), Color.White, flipMode); }
public void Draw(Texture2D texture, Vector2 topLeft, Vector2 bottomRight, Rectangle source, Color color, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(texture, topLeft, new Vector2(bottomRight.X, topLeft.Y), new Vector2(topLeft.X, bottomRight.Y), bottomRight, source, color, flipMode); }
public void Draw(Texture2D texture, Vector2 topLeft, Vector2 topRight, Vector2 bottomLeft, Vector2 bottomRight, Rectangle source, Color color, SpriteFlipMode flipMode = SpriteFlipMode.None) { if (!_active) { throw new InvalidOperationException("Begin() must be called before SpriteBatch may be used for drawing."); } if (texture == null) { throw new ArgumentNullException(nameof(texture)); } FlushIfNeeded(texture); _count++; EnsureBufferLargeEnough(); int vertexOffset = (_count - 1) * 4; int indexOffset = (_count - 1) * 6; float uvLeft = source.X / (float)texture._width; float uvRight = (source.X + source.Width) / (float)texture._width; float uvTop = (texture._height - (source.Y + source.Height)) / (float)texture._height; float uvBottom = (texture._height - (source.Y + source.Height) + source.Height) / (float)texture._height; if (flipMode == SpriteFlipMode.FlipHorizontally) { ValueHelper.Swap(ref uvLeft, ref uvRight); } if (flipMode == SpriteFlipMode.FlipVertically) { ValueHelper.Swap(ref uvTop, ref uvBottom); } _vertexData[vertexOffset + 0].Position.X = bottomLeft.X; // Bottom Left _vertexData[vertexOffset + 0].Position.Y = bottomLeft.Y; _vertexData[vertexOffset + 0].TexCoord.X = uvLeft; _vertexData[vertexOffset + 0].TexCoord.Y = uvTop; _vertexData[vertexOffset + 0].Color = color; _vertexData[vertexOffset + 1].Position.X = bottomRight.X; // Bottom Right _vertexData[vertexOffset + 1].Position.Y = bottomRight.Y; _vertexData[vertexOffset + 1].TexCoord.X = uvRight; _vertexData[vertexOffset + 1].TexCoord.Y = uvTop; _vertexData[vertexOffset + 1].Color = color; _vertexData[vertexOffset + 2].Position.X = topRight.X; // Top Right _vertexData[vertexOffset + 2].Position.Y = topRight.Y; _vertexData[vertexOffset + 2].TexCoord.X = uvRight; _vertexData[vertexOffset + 2].TexCoord.Y = uvBottom; _vertexData[vertexOffset + 2].Color = color; _vertexData[vertexOffset + 3].Position.X = topLeft.X; // Top Left _vertexData[vertexOffset + 3].Position.Y = topLeft.Y; _vertexData[vertexOffset + 3].TexCoord.X = uvLeft; _vertexData[vertexOffset + 3].TexCoord.Y = uvBottom; _vertexData[vertexOffset + 3].Color = color; _indexData[indexOffset + 0] = (ushort)(vertexOffset + 0); // Bottom Left _indexData[indexOffset + 1] = (ushort)(vertexOffset + 1); // Bottom Right _indexData[indexOffset + 2] = (ushort)(vertexOffset + 2); // Top Right _indexData[indexOffset + 3] = (ushort)(vertexOffset + 0); // Bottom Left _indexData[indexOffset + 4] = (ushort)(vertexOffset + 2); // Top Right _indexData[indexOffset + 5] = (ushort)(vertexOffset + 3); // Top Left }
public void Draw(Texture2D texture, Rectangle destination, Color color, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(texture, destination, new Rectangle(0, 0, texture._width, texture._height), color, flipMode); }
public void Draw(Tileset tileset, int tileX, int tileY, Rectangle destination, Color color, SpriteFlipMode flipMode = SpriteFlipMode.None) { if (tileset == null) { throw new ArgumentNullException(nameof(tileset)); } Draw(tileset.Texture2D, destination, tileset.GetTileRegion(tileX, tileY), color, flipMode); }
public void Draw(TextureRegion textureRegion, Rectangle destination, Color color, SpriteFlipMode flipMode = SpriteFlipMode.None) { if (textureRegion == null) { throw new ArgumentNullException(nameof(textureRegion)); } Draw(textureRegion.Texture, destination, textureRegion.Region, color, flipMode); }
public void Draw(TextureRegion textureRegion, Rectangle destination, SpriteFlipMode flipMode = SpriteFlipMode.None) { Draw(textureRegion, destination, Color.White, flipMode); }