public void Draw(Point pos, Camera camera, SpriteBatch spriteBatch, Renderer renderer) { int destX = (int)(pos.X * Tile.Width - camera.getPos().X); int destY = (int)(pos.Y * Tile.Height - camera.getPos().Y); int destW = Tile.Width; int destH = Tile.Height; int srcX = SpriteXIndex * TileSpriteSheet.SpriteWidth; int srcY = SpriteYIndex * TileSpriteSheet.SpriteHeight; int srcW = TileSpriteSheet.SpriteWidth; int srcH = TileSpriteSheet.SpriteHeight; spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, null, renderer.spriteScale); spriteBatch.Draw(Images.GetImage(tileSheetKey), new Rectangle(destX, destY, destW, destH), new Rectangle(srcX, srcY, srcW, srcH), Color.White); spriteBatch.End(); }
public void Draw(Camera camera, SpriteBatch spriteBatch, Renderer renderer) { if (SpriteSheet == null) { return; } if (SpriteSheet.Invisible == true) { return; } int destX = (int)(Pos.X - camera.getPos().X); int destY = (int)(Pos.Y - camera.getPos().Y); var sprite = SpriteSheet; int destW = sprite.SpriteWidth; int destH = sprite.SpriteHeight; int srcX = sprite.ClipXIndex * sprite.SpriteWidth; int srcY = sprite.ClipYIndex * sprite.SpriteHeight; int srcW = sprite.SpriteWidth; int srcH = sprite.SpriteHeight; // Clear stencil buffer renderer.graphicsDevice.Clear(ClearOptions.Stencil, Color.Black, 0f, 0); // Draw your sprites using the structures above Color tintColour = SpriteSheet.IsFlashTint ? SpriteSheet.FlashColor : Color.White; spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, renderer.beforeDepthStencilState, RasterizerState.CullCounterClockwise, renderer.alphaTestEffect, renderer.spriteScale); spriteBatch.Draw(sprite.SpriteSheet, new Rectangle(destX + SpriteOffset.X, destY + SpriteOffset.Y, destW, destH), new Rectangle(srcX, srcY, srcW, srcH), Color.Black); spriteBatch.End(); // Draw a full screen white quad with the structure above if (sprite.IsFlashed && !sprite.IsFlashTint) { spriteBatch.Begin(SpriteSortMode.Deferred, null, null, renderer.afterDepthStencilState, null); spriteBatch.Draw(renderer.pixel, renderer.graphicsDevice.Viewport.Bounds, sprite.FlashColor); spriteBatch.End(); } if (Consts.DEBUG_MODE) { spriteBatch.Begin(); spriteBatch.Draw(Images.DebugRect, new Rectangle(destX, destY, Dims.Width, Dims.Height), null, Color.Red); spriteBatch.End(); } }
public void Draw(Camera camera, SpriteBatch spriteBatch) { if (SpriteSheet == null) { return; } int srcX = 0; int srcY = 0; int srcW = SpriteSheet.Width; int srcH = SpriteSheet.Height; int destX = (int)(Pos.X - camera.getPos().X); int destY = (int)(Pos.Y - camera.getPos().Y); var sprite = SpriteSheet; int destW = (int)(srcW * Scale); int destH = (int)(srcH * Scale); spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, RasterizerState.CullCounterClockwise, null); spriteBatch.Draw(SpriteSheet, null, new Rectangle(destX, destY, destW, destH), new Rectangle(srcX, srcY, srcW, srcH), new Vector2(srcW / 2, srcH / 2), Rotation, null, Colour); spriteBatch.End(); }
public void Draw(SpriteBatch spriteBatch, Camera camera) { int xoffset = (int)(camera.getPos().X *xrate + xInitOff * image.Width) % Consts.GameWidth; int yoffset = (int)(camera.getPos().Y *yrate + yInitOff * image.Height) % Consts.GameHeight; int xoff2 = xoffset > 0 ? xoffset - image.Width : image.Width + xoffset; int yoff2 = yoffset > 0 ? yoffset - image.Height : image.Height + yoffset; spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise, null, null); spriteBatch.Draw(image, new Rectangle(xoffset, yoffset, image.Width, image.Height), Color.White); if (xoff2 != 0 && xloops) { spriteBatch.Draw(image, new Rectangle(xoff2, yoffset, image.Width, image.Height), Color.White); } if (yoff2 != 0 && yloops) { spriteBatch.Draw(image, new Rectangle(xoffset, yoff2, image.Width, image.Height), Color.White); if (xoff2 != 0 && xloops) { spriteBatch.Draw(image, new Rectangle(xoff2, yoff2, image.Width, image.Height), Color.White); } } spriteBatch.End(); }